php開(kāi)源教程,作為一個(gè)擁有7年開(kāi)發(fā)經(jīng)驗(yàn)的PHP程序員?
作為一個(gè)PHP的老人,我的意見(jiàn)有一些參考價(jià)值。我先介紹一下我的從業(yè)背景,2001年開(kāi)始用php,一直做電商系統(tǒng),有兩次中大型項(xiàng)目經(jīng)驗(yàn)。目前負(fù)責(zé)公司經(jīng)營(yíng),cto是用java的,15年金融系統(tǒng)經(jīng)驗(yàn)。
既然你提到了內(nèi)功,那就意味著不是短期可以具備的能力。但我們還是得圈住一個(gè)范圍,你要解決什么問(wèn)題?編程能力的內(nèi)功和做好某類系統(tǒng)的內(nèi)功顯然只有重疊部分,而不是完全相同。
所以,我暫時(shí)認(rèn)定你是想提高編程能力或技術(shù)疑難雜癥的綜合解決問(wèn)題能力。
編程有兩個(gè)大方向,一個(gè)是工程學(xué),另一個(gè)是算法相關(guān)的(可以說(shuō)是科學(xué)的范疇),但一般來(lái)說(shuō),很多軟件都是兩者兼而有之,但大多數(shù)業(yè)務(wù)系統(tǒng)還是工程學(xué)比較重要,算法都是用現(xiàn)成的,基本上不用設(shè)計(jì)或發(fā)明。
所以,我重點(diǎn)聊聊工程學(xué),這個(gè)也是我的專業(yè)領(lǐng)域。
軟件工程是指一定規(guī)模代碼量的開(kāi)發(fā)、管理、維護(hù)的相關(guān)方法論總稱。當(dāng)然,10萬(wàn)行以內(nèi)的系統(tǒng)工程學(xué)的知識(shí)起的作用還不明顯,但一萬(wàn)上以上的代碼基本上都牽涉到工程學(xué)的知識(shí)。你平時(shí)遇到的系統(tǒng)一些奇怪的bug,代碼的復(fù)制粘貼,代碼的規(guī)范等等問(wèn)題都是屬于工程學(xué)需要考量的問(wèn)題。java不同,java是有成熟的工程學(xué)規(guī)范體系。php的情況比較混亂。
所以,內(nèi)功就可以概括出來(lái)了。
1. 代碼的規(guī)范和質(zhì)量,邏輯的清晰和簡(jiǎn)單。
2. 模塊分包和類包的劃分和設(shè)計(jì)。
3. 目錄的組織和劃分。
4. 質(zhì)量保障工具的使用,如單元測(cè)試。
以上四點(diǎn)既和基本知識(shí)有關(guān),也和你的工程經(jīng)驗(yàn)有關(guān)。
所以,早期要增強(qiáng)內(nèi)功就包括,培養(yǎng)良好的編程習(xí)慣,形成自己面對(duì)復(fù)雜度較高的代碼段的邏輯清晰和簡(jiǎn)單化;其次、大量閱讀和解剖優(yōu)秀的工程開(kāi)源項(xiàng)目;然后,爭(zhēng)取較大規(guī)模的系統(tǒng)開(kāi)發(fā)機(jī)會(huì)。
另外呢,編程內(nèi)功跟一個(gè)人的性格也是息息相關(guān)的,一個(gè)能看清楚自己的人和一個(gè)自以為是、自我封閉的人,成長(zhǎng)的速度也是很大區(qū)別的。不懂就問(wèn),海納百川,虛心和同行請(qǐng)教,注重實(shí)事求是,這也是非常重要的內(nèi)功。
最后才是計(jì)算機(jī)的基礎(chǔ)知識(shí),包括各種能提高你編程能力的方法論,如《編程珠璣》《代碼大全》…各類技術(shù)書(shū)籍,比如我本人常年保持閱讀大量技術(shù)書(shū)籍的習(xí)慣。意思是,技術(shù)書(shū)籍的閱讀量多多益善。
另外,也要適當(dāng)補(bǔ)充關(guān)于《哲學(xué)》和《文學(xué)》《歷史》你很快就會(huì)發(fā)現(xiàn),編程需要的內(nèi)功已經(jīng)和一個(gè)人的基本素質(zhì)息息相關(guān)了,包括思維習(xí)慣等等,哪些編程厲害的人,做管理和經(jīng)營(yíng)也是一把好手。
因?yàn)槟銌?wèn)的問(wèn)題沒(méi)有界定范圍,所以只能這樣幫你概括。一次性打字寫(xiě)完的,有部分錯(cuò)別字,另外水平也有限,多多見(jiàn)諒,希望對(duì)你有幫助。
phpsdk怎么開(kāi)始開(kāi)發(fā)?
你有自己的網(wǎng)站,想開(kāi)發(fā)一個(gè)php的sdk,然后開(kāi)放出去給別人調(diào)用。
你已經(jīng)下載了別人的sdk,然后想基于該sdk開(kāi)發(fā)自己的應(yīng)用。
第一種情況,無(wú)非是寫(xiě)一些開(kāi)放接口,讓別人可以對(duì)你網(wǎng)站進(jìn)行有限的讀寫(xiě)操作。
第二種情況很常見(jiàn)。最常見(jiàn)的就是我們下載微博的sdk,然后開(kāi)發(fā)自己的應(yīng)用。如果是這樣,你可以多參考sdk的wiki頁(yè)面,上面一般都有實(shí)例代碼。 最外層包含:配置文件, 鑒權(quán)和一些公共的函數(shù)。
HTTP 目錄主要包含了一些對(duì) http 進(jìn)行封裝的類,這塊你可以不用關(guān)心。
Storage 目錄主要包含兩大塊:Bucket 中文件的管理和文件的上傳。
Processing 目錄主要包含文件的處理,文件處理又包含兩個(gè)方面:同步處理和異步處理。
Cdn 目錄主要包含了 CDN 的相關(guān) API ,有文件的刷新和預(yù)取,CDN 日志的下載等方法。
作為一個(gè)php全棧開(kāi)發(fā)工程師?
謝謝邀請(qǐng)!
PHP在Web開(kāi)發(fā)領(lǐng)域有廣泛的應(yīng)用,占據(jù)著大量的市場(chǎng)份額,尤其是在中小型網(wǎng)站的開(kāi)發(fā)中,大量的企業(yè)都會(huì)選擇PHP的開(kāi)發(fā)方案。與Java、Python等語(yǔ)言不同,PHP主要應(yīng)用在Web開(kāi)發(fā)領(lǐng)域,所以要想通過(guò)PHP創(chuàng)造更多的收入也需要從Web開(kāi)發(fā)入手。
可以從以下幾個(gè)方面來(lái)創(chuàng)造收入:
第一:承接Web開(kāi)發(fā)項(xiàng)目。基于PHP的Web開(kāi)發(fā)項(xiàng)目往往規(guī)模并不大,作為一個(gè)PHP全棧開(kāi)發(fā)工程師來(lái)說(shuō),自己搞定一個(gè)小型Web應(yīng)用是沒(méi)有問(wèn)題的。PHP在開(kāi)發(fā)周期上具備明顯的優(yōu)勢(shì),往往比Java具備更短的開(kāi)發(fā)周期,更適合中小型網(wǎng)站。其實(shí),采用PHP開(kāi)發(fā)大型商業(yè)平臺(tái)也是沒(méi)有問(wèn)題的,只不過(guò)大部分架構(gòu)師對(duì)于Java更加信賴,所以更愿意選擇Java而已。
第二:合作開(kāi)發(fā)。PHP可以為各種終端應(yīng)用提供后端開(kāi)發(fā)服務(wù),隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,前端開(kāi)發(fā)項(xiàng)目比較多,比如各種小程序、App等都需要后端服務(wù),此時(shí)使用PHP來(lái)開(kāi)發(fā)后端服務(wù)程序也是一個(gè)不錯(cuò)的選擇。采用PHP開(kāi)發(fā)后端服務(wù)也具備開(kāi)發(fā)周期短,調(diào)整方便的優(yōu)勢(shì),這也是為什么很多PHP程序員對(duì)PHP語(yǔ)言依賴度(忠誠(chéng)度)畢竟高的原因。
第三:開(kāi)發(fā)自己的Web應(yīng)用。有不少互聯(lián)網(wǎng)創(chuàng)業(yè)者在創(chuàng)業(yè)的早期都是從一個(gè)簡(jiǎn)單的網(wǎng)站開(kāi)始的,所以對(duì)于PHP工程師來(lái)說(shuō),完全可以自己開(kāi)發(fā)一個(gè)實(shí)用性的網(wǎng)站,通過(guò)不斷豐富網(wǎng)站的內(nèi)容從而吸引更多的用,當(dāng)發(fā)展到一定規(guī)模之后就會(huì)產(chǎn)生價(jià)值。
目前,Java語(yǔ)言已經(jīng)開(kāi)始有了收費(fèi)計(jì)劃,相信未來(lái)會(huì)有不少Java開(kāi)發(fā)人員轉(zhuǎn)向PHP開(kāi)發(fā)領(lǐng)域,不少項(xiàng)目組也會(huì)傾向于選擇PHP作為技術(shù)團(tuán)隊(duì)的開(kāi)發(fā)方案,這對(duì)于PHP來(lái)說(shuō)都是不錯(cuò)的消息,畢竟PHP可以證明很多東西并不比Java差,比如PHP的性能。
我從事軟件開(kāi)發(fā)工作多年,目前也在帶軟件開(kāi)發(fā)團(tuán)隊(duì),我會(huì)陸續(xù)在頭條寫(xiě)一些關(guān)于軟件開(kāi)發(fā)方面的文章,感興趣的朋友可以關(guān)注我,相信一定會(huì)有所收獲。
如果有軟件開(kāi)發(fā)方面的問(wèn)題,也可以咨詢我,謝謝!
如何成為優(yōu)秀的PHP全棧開(kāi)發(fā)師?
優(yōu)秀的PHP?mysql讀寫(xiě)分離hash一致性精通了?消息隊(duì)列MQ會(huì)不會(huì)?redis哨兵機(jī)制懂不懂?日志分析ELK掌握了嗎?jenkins持續(xù)集成,sonar代碼審查能用的順嗎?服務(wù)注冊(cè)中心consul搞定的怎么樣?分布式協(xié)調(diào)服務(wù)zookeeper有沒(méi)有問(wèn)題?RPC開(kāi)發(fā)的快不快。這些都沒(méi)問(wèn)題了,還有運(yùn)維、DBA。之后才是前端。全部都會(huì)才能叫全棧。
如何成為優(yōu)秀的PHP全棧開(kāi)發(fā)師?
首先要給提問(wèn)者潑一盆涼水,全棧有風(fēng)險(xiǎn),選擇需謹(jǐn)慎。
全棧最怕的就是都會(huì)一點(diǎn),再深入一下就啥也不會(huì),不能把全干理解全棧然后自嗨!
現(xiàn)代社會(huì)是一個(gè)越來(lái)越分工明確的社會(huì),每個(gè)人的時(shí)間精力是有限的不是特別有天賦自信可以駕馭,選擇一個(gè)點(diǎn)突破人生成就的上限可能會(huì)更高。
下面是我個(gè)人主觀總結(jié)的全棧成長(zhǎng)軌跡?
我提取提問(wèn)里面的3個(gè)關(guān)鍵詞 優(yōu)秀 PHP 全棧
提到了PHP應(yīng)該問(wèn)的是WEB全棧。全棧的定義需要獨(dú)立負(fù)責(zé)整個(gè)產(chǎn)品的業(yè)務(wù)架構(gòu)、技術(shù)架構(gòu),完成從產(chǎn)品的idea到上線全流程生命周期中的各個(gè)環(huán)節(jié),需要在產(chǎn)品、設(shè)計(jì)、開(kāi)發(fā)、運(yùn)維等多種角色間切換。
我把全棧分為4個(gè)階段,初級(jí)全棧、中級(jí)全棧、高級(jí)全棧、行業(yè)專家。成長(zhǎng)到第四階段最少需要10年。
初級(jí)全棧(1-3 年)
理解需求,懂得交互的基本原則;
熟悉現(xiàn)代前端開(kāi)發(fā)流程掌握HTML5;CSS3 LESS SAAS;es6,vue、react等mvvm框架;
熟練掌握PHP語(yǔ)言基礎(chǔ),熟悉各種框架;
熟練掌握SQL,NOSQL;
熟悉服務(wù)的發(fā)布;
中級(jí)全棧(3-5 年)
這個(gè)階段需要的是對(duì)內(nèi)功的修煉。
在前端方面熟練并對(duì)js有自己的深刻理解,理解mvvm框架原理,理解webpack等現(xiàn)代前端工具原理。
在后端方面需要數(shù)據(jù)持久層有深刻的理解和實(shí)踐經(jīng)驗(yàn),熟練掌握Redis等緩存數(shù)據(jù)庫(kù)的各種數(shù)據(jù)結(jié)構(gòu)和使用場(chǎng)景,熟練掌握MySQL等數(shù)據(jù)庫(kù)的基本運(yùn)維和SQL優(yōu)化。深刻理解PHP各種框架的原理。熟悉各種中間件的使用和基本運(yùn)維。理解分布式應(yīng)用,熟悉基本的網(wǎng)絡(luò)通訊協(xié)議。
高級(jí)全棧(5-10年)
這個(gè)階段的成長(zhǎng)單就技術(shù)而言需要更加深入到底層原理才能駕馭百萬(wàn)用戶級(jí)別以上服務(wù)。
前端方面需要具有更扎實(shí)的基本功深入到各個(gè)平臺(tái)UI渲染的原理中才能解決類似提高渲染速度和流暢度這樣的需求,總結(jié)一下就是這個(gè)階段的前端已經(jīng)不是業(yè)務(wù)交互代碼的搬運(yùn)工,需要在多端,快跨平臺(tái),載入速度,響應(yīng)性能,兼容性方面有自己的見(jiàn)解,能leader團(tuán)隊(duì)為業(yè)務(wù)提供當(dāng)下最佳的大前端整體解決方案。
后端方面就更加需要有扎實(shí)的數(shù)據(jù)結(jié)構(gòu)和算法,操作系統(tǒng),網(wǎng)絡(luò)通訊的基本功。
熟悉CAP理論,在系統(tǒng)的高可用,高性能,可擴(kuò)展上有一定的理解和經(jīng)驗(yàn)。
展開(kāi)來(lái)講就是需要了解各種架構(gòu)的模式,深入源碼級(jí)別的了解各個(gè)中間件的原理和高可用架構(gòu)原理。
了解分布式系統(tǒng)一致性算法原理,在主主,主從,主備高可用架構(gòu)有一定經(jīng)驗(yàn)。
深刻理解IO模型,線程模型,序列化方式能寫(xiě)出高性能應(yīng)用。
深刻理解微服務(wù)架構(gòu)中服務(wù)發(fā)現(xiàn),限流,負(fù)載均衡,出錯(cuò)處理等組件的原理。
深刻理解Redis,MongoDB,MySQL,HBase,ElasticSearch使用場(chǎng)景和原理。
跟隨業(yè)界發(fā)展理解docker,k8s,Serverless所解決的問(wèn)題。
行業(yè)專家?
本人還在第三階段發(fā)育中,沒(méi)有概念?
最后全棧的終極目標(biāo)是自己創(chuàng)業(yè)!
以上就是關(guān)于php開(kāi)源教程以及作為一個(gè)擁有7年開(kāi)發(fā)經(jīng)驗(yàn)的PHP程序員的相關(guān)回答,有更多疑問(wèn)可以加微。