「PHP」如何深入學習PHP,解決技術瓶頸

PHP給學習者的感覺是:初學的時候很容易,但是學了2-3年,就深刻感覺遇到了瓶頸,很難深入,放棄又可惜。所謂“雞肋,食之無味棄之可惜”的感覺很是貼切。

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

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

不過一旦通過這個關卡,你的認識水平將會更上一層樓。但這個關卡並不容易通過。因為,阻礙你的不是PHP的東西,而是很多非PHP的東西......

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

1:深入理解編程思想

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

不只是熟悉,而是要精通;

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

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

不要死記硬背這些,要充分的用現實道理去理解它,起碼要能說服自己。比如:就問你,為什麼要有繼承,為什麼要有多態?他們是基於什麼原因而產生的?他們的長相為什麼是那樣子?

這是重點,也是難點。難就難在,你好像都看過了,而且還看過很多的書籍,但是用的時候好像就搭不著邊。因為你沒有吃透它。這起碼會阻礙你對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.cnblogs.com/aksir/p/6774115.html


分享到:


相關文章: