怎麼解決深刻學習PHP的瓶頸

PHP給學習者的感受是:初學的時候很容易,可是學了2-3年,就深入感受遇到了瓶頸,很難深刻,放棄又惋惜。所謂「雞肋,食之無味棄之惋惜」的感受非常貼切。
前端

常常會有這種感受:不學,看似也不後退;學了,好像也沒什麼進步;if...else,循環這些你也都知道,甚至還能記住一些別人不大會的函數,可是一到項目來了,就頭大。縱然口中千語萬言,但其實心中實無一策。遇到什麼問題都一片迷茫,提心吊膽,無從下手......jquery

此時,首先恭喜你已經入行了,其次恭喜你遇到了深刻學習PHP的瓶頸。web

不過一旦經過這個關卡,你的認識水平將會更上一層樓。但這個關卡並不容易經過。由於,阻礙你的不是PHP的東西,而是不少非PHP的東西......正則表達式

要怎麼解決這個瓶頸?怎麼才能深刻學習PHP?shell

1:深刻理解編程思想

PHP開發項目涉及到的編程思想有:面向過程編程實現,面向對象編程實現,面向切面編程思想;數據庫

不僅是熟悉,而是要精通;編程

PHP一開始是變量,分支語句,循環語句,而後就是函數了,因此這是一開始就會遇到的編程思想:面向過程編程思想。它是以函數爲單位,把引發重複的代碼都封裝成函數的一種處理思想。能夠用這種思想直接去開發項目,也是能夠開發出來的。可是你會遇到不少不少重複的代碼,你會造不少不少文件,因此只用面向過程編程思想去開發項目,最大的特色就是:項目中的文件數量太多......文件太多會形成文件夾的分佈難易把控,也不利於項目的維護和升級,難以作大項目,一般作個企業站差很少。bootstrap

你應該減小文件數量,那麼就須要新思想了:面向對象編程思想。它的主要特色就是:封裝、抽象、繼承、多態、接口。瀏覽器

不要死記硬背這些,要充分的用現實道理去理解它,起碼要能說服本身。好比:就問你,爲何要有繼承,爲何要有多態?他們是基於什麼緣由而產生的?他們的長相爲何是那樣子?緩存

這是重點,也是難點。難就難在,你好像都看過了,並且還看過不少的書籍,可是用的時候好像就搭不着邊。由於你沒有吃透它。這起碼會阻礙你對PHP的框架的深刻認識,好比不少人用TP開發項目,用Laravel開發項目,可是你是否深刻研究了TP的源碼?Laravel的源碼?Composer是什麼東西?爲何要這樣?

此時你應該是「把薄書讀厚」的階段,你要充分的去尋找這些問題的答案,多問一下爲何,而後去找答案,在尋找答案的過程當中,你不知不覺的就提高了水平......

用面向對象思想去開發項目,能夠大量的減小文件的數量,讓你的項目很緊湊,精簡,可是功能又強大,擴展性好。不過當你的項目愈來愈大的時候,你會發現仍是有不少重複的代碼,他們體如今文件和文件之間有不可避免的重複,這不是面向對象的缺陷,而是項目自己的問題,面向對象只是沒有強大到能解決這些而已(面向過程就更不行了)。此時你要升級你的新思想了:面向切面編程思想。可能這種思想你感受到很模糊。但我若是說「套模板裏的獲取數據的標籤」,你應該就清楚了吧。

形如:

5" order="id asc" limit="10">

《{$title}》---{$author}

{$add_time}

這是在套模板的時候常常要使用到的獲取動態數據的方式。但你能解釋爲何要這樣作嗎?以及爲何它長成這個樣子?

其實能回答這些問題,你就已經進入了面向切面編程思想的領域,由於你要深入去理解模板解析引擎......它就是爲解決大項目而帶來的可是面向對象還不能解決的代碼冗餘問題。這樣才能讓你的項目愈來愈大......

2:MVC,單入口,正則表達式等

MVC不是記住這幾個單詞,是要深入理解它。理解爲何要有控制器,Model,View,以及它們各自的內容應該是什麼...

正則表達式也是須要很熟練的。

3:數據庫的深刻

對於數據庫的分庫、分表、分區、數據庫集羣要開始學習了。

數據庫優化,好比:索引優化,SQL語句的優化等。

4:各類緩存的處理

如:文件緩存,數據庫緩存,內存緩存等。

這些就會牽涉到不少東西,如:配置文件的寫法和操做,數據庫緩存表,緩存字段等。NoSQL的引入,如:Memcache,Redis,Mongodb,....

5:服務器

主要是Linux服務器,它上面的內容就多了,最早帶出來的就有Apache,Nginx等web監控程序。

還有ssh,ftp,等經常使用程序。

深刻一點還有shell編程,以及用shell編程去開發一個服務器管理系統,如:AMP,WDCP,....這些東西看似作PHP工做的你無關,可是若是你的網站訪問不了,你知道是什麼地方有問題了嗎?因此不是無關,而是頗有關,因此不要再保留那種侷限的狹隘意識了。

6:負載均衡、網站抗壓等

這些是作一個有發展潛力的項目的必須的內容,你瞭解了多少?和PHP有關。

7:深刻學習數據結構

相信大一的時候你學數據結構,裏面講些指針,鏈表,隊列,堆棧什麼的,你會聽的雲裏霧裏,並且你也不怎麼用的到。可是這個階段你能夠深刻來學習了,它會有助於理解好比Apache的原理,固然就可讓你更容易和輕鬆使用Apache了。這其實就在無形的幫你解決瓶頸問題。

8:須要學習底層語言

主要是:C語言,C++;可見C語言和C++是很是重要的基礎語言。PHP解釋器是由C/C++寫出來的,瀏覽器也是由它們寫出來的,這固然就和你的PHP應用聯繫起來了。

9:增強應用層面的學習

如:微信開發,各類第3方插件的使用,如:jquery,Layer,bootstrap,Uploadify。甚至本身動手寫須要的插件。

不要只限制PHP,而要開始動手弄前端了,由於前端的東西可讓你更深刻理解PHP。好比:網站首頁的文章提取,若是數字是1,2,3,4,5這些,你能夠從前端解決,也能夠從PHP那邊解決...若是要求更變態的信息展現呢?極可能就適合在PHP那邊解決甚至在數據庫那邊解決......

擴展你的認識會幫你深刻學習PHP......

總之,當你學習PHP有必定的基礎了,你就不會再垂手可得的說PHP很容易,很簡單,兩個星期學會之類的幼稚的話了。你甚至會感受到本身愈來愈眇小,還須要學不少不少東西,這樣還好,至少你真的是入這一行了,但愈來愈會遇到深刻學習PHP的瓶頸了。阻礙你前進的步伐的東西是那些不少非PHP的東西。你要用豁達的心態去涉獵那些遇到的,不要挑肥揀瘦、挑三揀四,嫌棄這個嫌棄那個,然而成天又在埋怨....

只要堅持下去,解決一個個新的爲何,你的瓶頸會有過去的那一天,那時候你就是真正的學有所成了,一個融會貫通而具備綜合解決問題能力的大牛。

原文地址:https://www.jianshu.com/p/5002143767da

相關文章
相關標籤/搜索