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