學習PHP框架只停留在會用層面,職業生涯確定走不遠!

工做這麼多年,也面試過不少PHP工程師,我發現不少PHP工程師只停留在使用框架的層面,然而對框架底層根本沒有深刻去了解,那麼這就會給本身的職業生涯帶來必定的瓶頸,當遇到問題的時候你就無從下手,不知道如何去排查與調試,更別說去擴展核心庫,相反,若是你們對框架底層源碼有必定的瞭解,這樣的問題就變得簡單不少, 學習某一項語言都是須要耐心,學習框架貴在堅持,這會讓你對PHP全局以及框架底層有質的飛躍。php

 

總而言之:搞技術的,既然入坑了,就得知道一個理念:知其然還得知其因此然,停留在會用階段,職業生涯確定走的不遠!由於你沒有深刻。。。laravel

 

那麼有小夥伴就開始質疑了,那我要如何選擇一門框架呢?就拿PHP來講吧,PHP有N多框架,好比YII,ThinkPHP,laravel等等,這幾個都有本身的優點和特色,在國內ThinkPHP確實用的不少,這裏其實我想表達的是:無論你學習哪一個框架並不重要,咱們須要選擇一個而後安心的學好它的底層,學習須要堅持,耐心+時間,好比你學會了一個框架以後,那麼其餘框架你自學下很快就會上手,由於框架的核心思想基本是相通的,它們的基礎都是PHP,不要想得太複雜。那麼如今就就拿ThinkPHP來舉例,咱們如何學習他的底層呢?面試

咱們能夠從如下幾個方向入手:編程

1、 框架中是如何加載這些類庫的?設計模式

學習框架底層如何加載類庫這一步是必須的,由於咱們要知道框架是如何加載不一樣目錄下的不一樣文件,若是是框架經過composer安裝的類庫,一樣咱們都要弄清楚是如何被加載到框架的,那咱們就要從think\Loader.php文件入手了。接下來如何作?因此學習框架底層必定要帶着問題和思考的態度去學習,這樣成長確定很快。緩存

好比我想本身建立一個自定義leifeng目錄 也想把它被加載到框架中,當你瞭解瞭如何加載文件的,也試試加載本身定義的文件吧。這個時候恭喜你底層第一步你搞懂了。composer

 

2、設計模式學習(工廠模式、單例模式、註冊樹模式、門面模式等)框架

你想提高本身php的技能,那你就必須學習一下設計模式,雖然這個常常在面試中遇到,可是但願你不只僅只是爲了應付面試,而是要真正的弄清楚什麼是設計模式。我以前整理過,能夠看看這個教程工具

 

3、反射機制學習學習

什麼是反射呢?

在PHP的面向對象編程中的對象,它被系統賦予自省的能力,而這個自省的過程,咱們把它叫作反射。

咱們對反射的直觀理解能夠是,根據達到地,找到出發地和來源這麼一個過程,通俗來說就是,我給你一個光禿禿的對象,完事你能夠根據這個對象,知道它所屬的類,擁有哪些方法。

在PHP中,反射是指在PHP運行狀態中,擴展分析PHP程序,導出或者提取出關於類、屬性、方法、參數等的詳細信息,包括註釋。這種動態獲取信息以及動態調用對象方法的功能,被稱爲反射API。

 

4、依賴注入 控制反轉

常常聽過吧,是否有去了解,敲敲代碼實現一下。簡單瞭解一下

(1)依賴注入是從應用程序的角度在描述,能夠把依賴注入,即:應用程序依賴容器建立並注入它所須要的外部資源;

(2)而控制反轉是從容器的角度在描述,即:容器控制應用程序,由容器反向的嚮應用程序注入應用程序所須要的外部資源.

我以前整理過,能夠看看這個教程

 

 5、研究TP框架中的容器、門面Facade think/Container think\Facade

6、路由

以上2-6點的具體分析 能夠直接經過index.php入口文件去跟進,看看框架裏面走了哪些流程,如何實現,用到哪些工具欄,環境變量,如何配置等等。 

說到框架的路由是如何作的,經過跟進,咱們會在App類中 在routeInit路由初始化這個方法,它是路由的核心,具體基礎路由類庫是如何引入的。你都能看的明白的

 

7、底層控制器、模型、視圖的基礎類庫分析

8、其餘一些工具類的分析 

好比:異常處理、緩存等核心類庫分析。

 

以上這些基本上涵蓋了框架的核心內容,代碼原本就是很枯燥的一個東西,在研究框架底層這個過程更是枯燥和痛苦的,可是咱們須要堅持【堅持下來就能改變世界了】閱讀框架代碼不是看一遍就完事了,看不懂,咱們就多看幾遍,而且在看的過程當中咱們還須要作點以下幾點:

一、在你有疑問的地方打上斷點,輸出相關的內容出來 看看他到底返回什麼內容,由於這樣更加直觀,便於你真正意義上理解

二、咱們須要思考它爲何要這樣作?我這樣作能夠嗎?能不能變通、或者有沒有更好的方法?由於帶着問題和思考的態度去學習 更加有利於你的我的成長

三、在研究源碼的時候有不懂得地方確定很正常的,這個時候必定要記住多利用百度或者谷歌

四、有個講師提醒我,必定要多畫圖, 由於您去研究源碼而後還能經過圖的方式畫出來 這更加有基於您學習以及深刻理解,它真的能起到事半功倍的做用!

 

好比下面的圖解:

類自動加載的時候會用到的一些屬性,而且類的自動加載和他們息息相關

 

 

 

 

 

 

 在這裏我主要是想表達咱們必定要邊看源碼,邊經過圖例記錄下來,深刻理解,對你學習頗有幫助的。寫到這裏,感謝閱讀!

給你們分享一個學習羣 筆試面試題以及php進階的學習資料都更新在羣裏 歡迎你們一塊兒來學習

點擊加入該羣學習

相關文章
相關標籤/搜索