日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

文章來自:php自學中心

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

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

那么有小伙伴就開始質疑了,那我要如何選擇一門框架呢?就拿PHP來說吧,PHP有N多框架,比如YII ThinkPHP、laravel等等,這幾個都有自己的優勢和特點,在國內ThinkPHP確實用的很多,這里其實我想表達的是:不管你學習哪個框架并不重要,我們需要選擇一個然后安心的學好它的底層,學習需要堅持,耐心+時間,比如你學會了一個框架之后,那么其他框架你自學下很快就會上手,因為框架的核心思想基本是相通的,它們的基礎都是PHP,不要想得太復雜。那么現在就就拿ThinkPHP來舉例,我們如何學習他的底層呢?

php老司機和你聊聊學習底層源碼的一些感悟

堅持,耐心,時間

我們可以從以下幾個方向入手:

一、 框架中是如何加載這些類庫的?

學習框架底層如何加載類庫這一步是必須的,因為我們要知道框架是如何加載不同目錄下的不同文件,如果是框架通過composer安裝的類庫,同樣我們都要弄清楚是如何被加載到框架的,那我們就要從thinkLoader.php文件入手了。接下來如何做?所以學習框架底層一定要帶著問題和思考的態度去學習,這樣成長肯定很快。

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

二、設計模式學習(工廠模式、單例模式、注冊樹模式、門面模式等)

你想提升自己php的技能,那你就必須學習一下設計模式,雖然這個經常在面試中遇到,但是希望你不僅僅只是為了應付面試,而是要真正的弄清楚什么是設計模式

三、反射機制學習

什么是反射呢?

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

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

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

這里自己找個例子加強一下。

四、依賴注入 控制反轉

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

(1)依賴注入是從應用程序的角度在描述,可以把依賴注入,即:應用程序依賴容器創建并注入它所需要的外部資源;

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

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

六、路由

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

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

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

八、其他一些工具類的分析

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

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

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

2、我們需要思考它為什么要這樣做? 我這樣做可以嗎? 能不能變通、或者有沒有更好的方法? 因為帶著問題和思考的態度去學習 更加有利于你的個人成長

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

4、有個講師提醒我,一定要多畫圖, 因為您去研究源碼然后還能通過圖的方式畫出來 這更加有基于您學習以及深入理解,它真的能起到事半功倍的作用!

比如下面的圖解:

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

php老司機和你聊聊學習底層源碼的一些感悟

類自動加載的時候會用到的一些屬性

底層容器的一些屬性內容

php老司機和你聊聊學習底層源碼的一些感悟

底層容器的一些屬性內容

instances屬性就是最終的容器核心

php老司機和你聊聊學習底層源碼的一些感悟

instances屬性就是最終的容器核心

框架底層配置文件走過的流程圖

php老司機和你聊聊學習底層源碼的一些感悟

框架底層配置文件走過的流程圖

在這里我主要是想表達我們一定要邊看底層源碼,邊通過圖例記錄下來,深入理解,對你學習很有幫助的。寫到這里,感謝閱讀!

分享到:
標簽:php
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定