「本文是解析容器類別原始碼之前做的一個簡單的梳理,把大體梳理完腦海中有個印象才可以深入的對容器進行解析。
」
在先前的文章中實作了一個自己創建的容器,接下來看看源碼中的容器,經過了先前文章中容器中出現的技術點都已經囊括完了。
在接下閱讀容器原始碼就不會很吃力,如果之前的文章沒看,一定要大概過一遍哈!
相信大家無數次打開的一個檔案public/index.php
。
曾經有多少次開啟這個檔案想對原始碼進行一探究竟,但是看著看著就放棄了。
經過先前的註冊樹模式之後,你一定就會明白這行程式碼會回傳什麼Container::get('app')
這行程式碼回傳就是app的實例,可以進行簡單的斷點一下。
可以看到回傳就是app類別裡邊的眾多屬性。
所以說註冊樹模式不會的在繼續返回去看之前寫的,要不越看越迷糊。
之前的技術點都是為了後邊一個鋪墊,如果之前的文章不看後邊是沒辦法看的,高手就不說了哈!
那麼框架中的容器是怎麼定義的呢!它到底是怎麼實現的呢!
也就是只要要去關注這個get()
方法做的事情就可以了。
程式碼就會追蹤到檔案thinkphp/library/think/Container.php
中的get()
方法
這裡的getInstance()
方法不陌生了吧!這就是上文說過的單例模式。也就是說在程式的聲明週期內僅此會傳回一個實例的物件。
可以進行程式碼追蹤getInstance()
這個方法,你就會在同檔中看到這個單例模式的方法,回傳Container實例。
接下來會對容器中的make方法進行深度解析。
「堅持學習、堅持寫博、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大互聯網中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。
”
以上是ThinkPHP容器初步解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!