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