作業這么多年,也面試過很多PHP工程師,我發現很多PHP工程師只停留在使用框架的層面,然而對框架底層根本沒有深入去了解,那么這就會給自己的職業生涯帶來一定的瓶頸,當遇到問題的時候你就無從下手,不知道如何去排查與除錯,更別說去擴展核心庫,相反,如果大家對框架底層原始碼有一定的了解,這樣的問題就變得簡單很多, 學習某一項語言都是需要耐心,學習框架貴在堅持,這會讓你對PHP全域以及框架底層有質的飛躍,
總而言之:搞技術的,既然入坑了,就得知道一個理念:知其然還得知其所以然,停留在會用階段,職業生涯肯定走的不遠!因為你沒有深入,,,
那么有小伙伴就開始質疑了,那我要如何選擇一門框架呢?就拿PHP來說吧,PHP有N多框架,比如YII,ThinkPHP,laravel等等,這幾個都有自己的優勢和特點,在國內ThinkPHP確實用的很多,這里其實我想表達的是:不管你學習哪個框架并不重要,我們需要選擇一個然后安心的學好它的底層,學習需要堅持,耐心+時間,比如你學會了一個框架之后,那么其他框架你自學下很快就會上手,因為框架的核心思想基本是相通的,它們的基礎都是PHP,不要想得太復雜,那么現在就就拿ThinkPHP來舉例,我們如何學習他的底層呢?
我們可以從以下幾個方向入手:
一、 框架中是如何加載這些類別庫的?
學習框架底層如何加載類別庫這一步是必須的,因為我們要知道框架是如何加載不同目錄下的不同檔案,如果是框架通過composer安裝的類別庫,同樣我們都要弄清楚是如何被加載到框架的,那我們就要從think\Loader.php檔案入手了,接下來如何做?所以學習框架底層一定要帶著問題和思考的態度去學習,這樣成長肯定很快,
比如我想自己創建一個自定義leifeng目錄 也想把它被加載到框架中,當你了解了如何加載檔案的,也試試加載自己定義的檔案吧,這個時候恭喜你底層第一步你搞懂了,
二、設計模式學習(工廠模式、單例模式、注冊樹模式、門面模式等)
你想提升自己php的技能,那你就必須學習一下設計模式,雖然這個經常在面試中遇到,但是希望你不僅僅只是為了應付面試,而是要真正的弄清楚什么是設計模式,我之前整理過,可以看看這個教程
三、反射機制學習
什么是反射呢?
在PHP的面向物件編程中的物件,它被系統賦予自省的能力,而這個自省的程序,我們把它叫做反射,
我們對反射的直觀理解可以是,根據達到地,找到出發地和來源這么一個程序,通俗來講就是,我給你一個光禿禿的物件,完事你可以根據這個物件,知道它所屬的類,擁有哪些方法,
在PHP中,反射是指在PHP運行狀態中,擴展分析PHP程式,匯出或者提取出關于類、屬性、方法、引數等的詳細資訊,包括注釋,這種動態獲取資訊以及動態呼叫物件方法的功能,被稱為反射API,
四、依賴注入 控制反轉
經常聽過吧,是否有去了解,敲敲代碼實作一下,簡單了解一下
(1)依賴注入是從應用程式的角度在描述,可以把依賴注入,即:應用程式依賴容器創建并注入它所需要的外部資源;
(2)而控制反轉是從容器的角度在描述,即:容器控制應用程式,由容器反向的向應用程式注入應用程式所需要的外部資源.
我之前整理過,可以看看這個教程
五、研究TP框架中的容器、門面Facade think/Container think\Facade
六、路由
以上2-6點的具體分析 可以直接通過index.php入口檔案去跟進,看看框架里面走了哪些流程,如何實作,用到哪些工具列,環境變數,如何配置等等,
說到框架的路由是如何做的,通過跟進,我們會在App類中 在routeInit路由初始化這個方法,它是路由的核心,具體基礎路由類別庫是如何引入的,你都能看的明白的
七、底層控制器、模型、視圖的基礎類別庫分析
八、其他一些工具類的分析
比如:例外處理、快取等核心類別庫分析,
以上這些基本上涵蓋了框架的核心內容,代碼本來就是很枯燥的一個東西,在研究框架底層這個程序更是枯燥和痛苦的,但是我們需要堅持【堅持下來就能改變世界了】閱讀框架代碼不是看一遍就完事了,看不懂,我們就多看幾遍,并且在看的程序中我們還需要做點如下幾點:
1、在你有疑問的地方打上斷點,輸出相關的內容出來 看看他到底回傳什么內容,因為這樣更加直觀,便于你真正意義上理解
2、我們需要思考它為什么要這樣做?我這樣做可以嗎?能不能變通、或者有沒有更好的方法?因為帶著問題和思考的態度去學習 更加有利于你的個人成長
3、在研究原始碼的時候有不懂得地方肯定很正常的,這個時候一定要記住多利用百度或者谷歌
4、有個講師提醒我,一定要多畫圖, 因為您去研究原始碼然后還能通過圖的方式畫出來 這更加有基于您學習以及深入理解,它真的能起到事半功倍的作用!
比如下面的圖解:
類自動加載的時候會用到的一些屬性,并且類的自動加載和他們息息相關




在這里我主要是想表達我們一定要邊看原始碼,邊通過圖例記錄下來,深入理解,對你學習很有幫助的,寫到這里,感謝閱讀!
給大家分享一個學習群 筆試面試題以及php進階的學習資料都更新在群里 歡迎大家一起來學習
點擊加入該群學習
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/108975.html
標籤:PHP
