這篇資源總結放在github上,這個倉庫會持續更新,如果你感興趣,可以移步到github上。本篇文章可能在這兒更新會有延遲
php修行之路
目錄
加羣交流
微信羣”PHP開發交流羣”
由於微信羣的限制,超過 100 人就不能掃碼加羣。所以可以先關注我公衆號,然後發送 PHP開發
,按照提示一步一步加羣。
因爲下面的視頻教程大多數在我的雲盤上存着,而且公開分享有可能獲取不到,遇到這種情況也可以加羣,進羣之後我重新給你發鏈接,同時在這邊及時更新。
學習步驟
第一階段
- 首先對HTML+CSS有一個基礎的瞭解,做出一個簡單的頁面,感受一下網頁開發的樂趣。(HTML+CSS)
- 接着簡單的學習一下JavaScript,瞭解網頁的動態交互效果是怎麼做出來的。(JavaScript)
- 學習一點Linux基礎課程,因爲大多數的web站點都是部署在Linux服務器上的,所以你需要了解一下簡單的Linux操作。(Linux基礎)
- 當你對這些都有一點基礎的瞭解之後,這時候開始學習PHP語法的效果可能會更好。所以就開始你的PHP學習之路吧!(PHP語法)
- 可能經過之前的瞭解,你知道大多數的PHP站點都是需要數據庫的,這裏我們一般說PHP和MySQL會更配哦!那麼我的建議是MySQL確實是一個不錯的選擇。(MySQL數據庫瞭解)
- 當你有了這些基礎知識之後,你已經可以創造一些簡單的小玩意了!哦!這時候你可能會問我該在哪裏跑我的程序呢?有了問題就要解決麼!畢竟我們程序員的主要職責就是debug了。所以開始搭建你的LAMP環境吧!(注意:我這裏說的是LAMP環境,可能大部分人用的是Windows系統,畢竟這也算是中國國情了麼!而且確實在Windows上搭建WAMP環境對於不習慣使用命令行的人來說確實會方便不少,但是對於你以後在公司工作來說,這卻不是一個很好的選擇!是的,沒錯!公司90%以上使用的都是Linux系統。當你在學習剛開始的時候就用LAMP環境,這樣你就能更好的適應公司的環境,畢竟Linux系統的命令行操作的命令那麼雜,如果你不經常使用,過不了幾天你學過的那些Linux基礎就忘光了。之後還得增加學習成本來重新學習LAMP環境,那麼一開始就使用它,何樂而不爲呢? – 這裏可能和前幾個學習步驟有點衝突,畢竟當你翻開第一本PHP語法書的時候,他基本上講的就是環境搭建,所以我這個步驟可能有點靠後了,這個就根據你個人的學習習慣來調整就好。如果你喜歡準備的萬無一失在開始你的編程之旅,那麼我按照這個學習順序走就可以了!當然如果你之前已經瞭解過一點相關知識,那麼別猶豫,直接搭建好環境開幹!)
- 要是你按照這個順序已經學到這裏了,那麼現在開始做一個界面精美的留言本吧!一個留言本基本上就都考覈了你的基礎知識了。你可以用你學到的HTML+CSS,JavaScript做一個好看又有動態交互的界面。再用PHP語法來連接數據庫,編寫邏輯,操作數據。這些就考驗了你對PHP語法的簡單運用!然後你要是按照我第六條建議搭建的是LAMP環境,那麼你在建表的時候就不免用到切換用戶,進入目錄,創建目錄等等一系列Linux命令,當然了,對於新手來說,我的建議是在命令行下建表,這樣更加有利於你對sql語句的學習。
第二階段
到了第二階段,可能對於熱愛學習的你來說,已經不僅僅滿足於做一個簡單的留言本了!畢竟這對於現代的我們來說這可能已經是上個世紀的東西了,誰稀罕? 而且你可能這個時候已經慢慢的認識到了,現在已經是面向對象的世界了。俗話說“萬事萬物皆對象”,要是還用原生腳本來編寫的話,雖然我得承認他們的速度是最快的,但是在這個需求多變的世界中,需求的改變時時刻刻都在發生,當然如果你的產品經理人不錯的話,他可能會提前給你確定好大部分的需求,這樣你改動的時候可能會少一點。可惜天不遂人願,他們大多被叫做產品狗,意思你自己體會去吧。這樣你如果用原生寫出來的項目,只要有一點點的變動,你可以自己試試,看看會不會把你整的喊爸爸。
這樣,爲了我們自己的身體健康,我們就需要有一種高度封裝的代碼,耦合性極低,大家誰都不影響誰,你讓我改動這一塊,我就僅僅需要動這一塊就好了。而且你想用我這一個功能,隨便用,你只要按照我給你的那個屬性直接用就行!誰讓我們牛逼了。看到這兒,你是不是對這個神奇的東西有了很大的期待啊?沒錯,這個神奇的東西就是我們上面說的面向對象的思想。相信我,當你真正掌握了面向對象的思想,你就會感受到人間自有真情在。
1. 上面大體的說了一下面向對象的好處,現在我們就來學習一下吧!這個時候就應該學學PHP的進階內容了,關於PHP的面向對象編程,我們需要了解命名空間,類,繼承,接口,類自動加載等等(PHP面向對象編程)。這個面向對象的思想是最難轉化的,可能你已經習慣了面向過程編程,感覺邏輯就是應該按照你的思路來走,剛剛上手面向對象編程,你可能會覺得很變扭。但是,相信我,在前期你可能需要強迫一下自己,當你真正熟悉了oop之後你可能就再也離不開他了。
2. 上面說完了PHP的面向對象編程,那麼我們就該思考一個問題了。我的邏輯編碼已經有那麼一點點登堂入室的感覺了,但是發現在連接數據庫的時候還是使用的是原來的連接方式感覺好變扭啊,而且萬一哪天我心情不好,想換個數據庫玩玩,那我還得把這段連接代碼刪除,找到專門連接其他數據庫的連接方式。有沒有一些一勞永逸的方法呢?別擔心,已經有大神爲我們解決了。下面我們就說說進階的第二個話題-數據庫。在這裏我介紹兩個oop方式的數據庫擴展(PDO,mysqli)。PDO已經實現了通過對象封裝讓我們用一段代碼可以隨意切換數據庫,做到了想換就換,心隨我動。而mysqli是MySQL的進階版本,現在官方推薦的是這個。(PDO,mysqli)
3. 當然這是說的我們後端的進階,那麼可能有的同學就說了,寫前端的JavaScript也好費勁,調用一個簡單的id就需要寫那麼一長串代碼,好費勁啊!別擔心,這就是我要給你們介紹的JavaScript的進階jQuery,他對原生的dom進行了封裝,讓你用更少的代碼來完成更多的事兒,同時他又是看着那麼簡潔,優雅。畢竟我們可是高貴的程序猿,可不是民工。追求的是藝術和科技的結合。(jQuery)
第二階段是改變你的思維方式,讓你換個思路去看世界。思想變過來了,我們不妨用我們這一階段學到的東西,來吧你的之前做的留言本,全都換成面向對象編程。這樣你可能就感受到它的魅力了。
第三階段
當你完成了上面兩個階段,如果你是一步一個腳印的來走的話。我相信的摩天大樓就在你的眼前。那還等什麼,趕快建起高樓,走上人生巔峯,迎娶白富美吧!但是,要是我們還是像之前那樣打地基一步一個腳印的去蓋的話,那這摩天大樓何時才能完工呢?這個時候我們就需要站在巨人的肩膀上來實現了。我們只需要把摩天大樓裝修的漂漂亮亮的就好,至於搭建腳手架這種事讓巨人去幫你做吧。所以第三階段我們就需要學習如何使用框架了。畢竟前人栽樹後人乘涼,我們只需要拿來用就好。這裏我介紹幾個當前PHP主流的框架,也是我經常使用的這幾個(Laravel,Yii,Thinkphp)。
- Laravel是以PHP最優雅的框架來著稱的,它運用了很多先進的思想,優雅的設計。在你使用它的時候你會感覺你在打造的是一個藝術品。不過又有點就會有缺點,因爲他先進的思想,優雅的設計導致他相比較其他框架來說反應有點慢,畢竟貴族永遠都是那麼慢條斯理。
- Yii就想一個朝氣蓬勃的青年,他快捷,高效,安全,當你使用它的時候你會感覺非常順手。
- Thinkphp是國內的一個框架,他是我認識的第一個框架,他非常的簡潔,給了你極大地便利,當你想要使用它的時候,你可以把它撿起來,不需要的話,隨手扔掉就好。但是他有一個我不能忍受的缺點就是他有一些函數的命名僅僅使用一個字母來命名,雖然簡潔,就我本身而言我感覺極其不友好。
上面就是我介紹的幾個框架,俗話說:一法通百法通,當你能深刻的理解一個框架的時候,在上手其他框架的時候,僅僅是表達方式上的不同。
下面我們介紹幾個前端框架,讓我們寫界面也能寫的更加優雅:(bootstrap,Vue,angular.js)
- bootstrap這個框架可以說是後端程序員的福音,對於一個討厭寫界面,而且寫出的界面毫無美感的你來說。bootstrap裏面的柵格系統,會讓你只關心你的邏輯實現,至於界面的話很簡單的就能搭建出一個簡潔優雅的界面來。
- Vue 這可以說是一個跟得上潮流的框架,它的MVVM模式,數據綁定的思想都可以讓你更加方便的來調用後臺數據,而且他及其小巧,更加方便你的定製。現在好多公司都在在它的基礎上來搭建內部腳手架。所以學習他,絕對是一個不錯的投資。
angular.js 相信程序猿沒有聽過Google的應該很少吧。沒錯他就是Google開源出來的一個框架,相信質量是一定有保障的。而且他火熱的社區氛圍,也保障了它的生命力。他也用了MVC的模式,可以實現雙向數據綁定。這麼多的優點,難道你就不心動麼?
第四階段
對於已經走完以上幾個階段的人最容易出現的問題就是PHP好簡單啊!PHP在手,天下我有的感覺。感覺再也沒有了當年學習的熱情,尤其是你還做過一些零零散散的項目,更是覺得在PHP上有更大的進步空間。我當年也是這樣,感覺誰都很菜,自以爲已經深諳PHP之道了。有這種感覺很正常,畢竟PHP非常簡單,甚至最難的數據結構都已經有大神給你封裝成函數,隨便掉用即可。但是PHP簡單,可是web開發可是博大精深啊。在這個階段,你就需要往更深層次來走了,雖然還沒達到研究PHP內部實現的程度,但是下面我說的這些知識已經夠你專研一陣子了。
- 首先從上個階段你對框架的運用,你已經理解到MVC模式的思想了麼?這個時候就是需要你去了解的了。(MVC)
- 看着大神給你搭好的腳手架,你現在光是會用,難道對他們神奇的封裝一點都不好奇麼?爲什麼這樣調用,你就能實現你想要的功能?所以是時候自己儘自己最大的努力搭建一個你自己的腳手架了,即使你自己將來不用,但是如果你自己寫一遍的話,你就能對框架的宏觀搭建有一個更深的瞭解。(搭建自己的框架)
- 同樣的話對前端框架也是有用的,當然如果你是主攻後端的話,我的建議是那你只要簡單瞭解一下內部思想就好了。畢竟編程編的是思想,所不定他的思想是對你有用的,那麼你可能就會搭建出一個更好的框架,變成傳說中的大神。
- 你在第三階段的時候有沒有感覺,有時候你解決某個邏輯的時候想到了一個特別好的解決方法,爲此你還高興不已。但是我要告訴你,在此之前可能對於一個資深工程師來說這就是一個簡單的設計模式,已經被用了好多年。所以這個階段我推薦你去看一下設計模式的書,在之前大神們已經給出了23中設計模式。他們都是思想的精華,值得你仔細研讀。(設計模式)
- 還有你之前可能只是簡單的傳值,但是你卻不知道他們內部是怎麼做到的,也有可能你知道,但是卻不是很清楚。所以在這個階段我推薦你看看HTTP協議,TCP/IP原理,Apache服務器內部配置,Auth協議。這些已經涉及到了一些內部原理,他可能枯燥無味,但是這些知識絕對是你成神路上必不可少的東西。(HTTP,TCP/IP,Apache,Auth協議)
達到上面這些程度的,可以說你已經很厲害了,帶領一個小團隊基本不成問題。但是如果我想成爲業內的大神該怎麼辦呢?這個時候你就需要往更深的程度發展了,比如說服務器,PHP原理什麼的,因爲我自己也在摸索,所以對於更高的程度也。。。。。
官方文檔
- PHP手冊
- JavaScript 參考文檔
- HTML教程
- css3教程
- css教程
- mysql教程
- MySQL PDO教程
- MySQLi 函數
- jQuery API 中文文檔
- Vue.js教程
- AngularJS
- Yii文檔
- Laravel5.1教程
- ThinkPhp手冊
社區
工具
- PHPstorm
- Sublime
- Notepad++
- SQLyog
- centos 6.5 nginx安裝與配置
- CentOS上使用yum安裝Apache
- CentOS6.4下Mysql數據庫的安裝與配置
- Composer
- npm中文文檔
書籍
- Bootstrap用戶手冊:設計響應式網站
- PHP-Debug-Manual-public
- Computer Science Made Simple Learn How Hardware And Software Work
- 大話設計模式
- yii2forbeginners
- HTTP權威指南
- TCP/IP三卷經典
視頻教程
下面這些視頻是我在學習過程中看過的,感覺講的比較清晰的,根據學習的難易程度依次往下排序的:
第一階段
第二階段
第三階段
這一部分的框架學習,我感覺直接進入實戰,然後結合官方文檔效果比較好,相反要是結合一些基礎視頻反而顯得有點兒囉嗦!適合自己就好。
- zend framework
- Yii2.0全力出擊打造完整電商平臺
- 前端到後臺ThinkPHP開發整站
- 知乎實戰laravel
- 6小時jQuery開發小應用無密碼
- vue實戰
- 從零開始打造自己的PHP框架
第四階段
我感覺這一階段更適合讀書,讀一些講解原理的書,而且也沒有什麼太好的視頻。
1. OAuth2.0協議
2. mysql優化
3. 數據結構與算法1
4. 數據結構與算法2
學習網站
博客
博客這個會隨時更新,遇到比較好的就會放上來。
知識圖譜
我會添加一些比較好的知識圖譜,持續更新。。。
- php開發圖譜 這是我在CSDN創建的一個知識圖譜,因爲受邀知識庫的特邀編輯,我每天會審覈一些PHP的博文,如果比較好的話,在我審覈後,我會順手加到我的個人圖譜中,有興趣的可以關注一下。