站長資訊網
        最全最豐富的資訊網站

        ThinkPHP容器之單例模式

        本文主要針對框架內部容器以及門面的實現做為基準點來實現,

        前言

        在這之前已經剖析過了類的自動加載、配置文件加載的源碼解析,本文為第三期的文章,主要針對容器以及門面類的實現,解析源碼。以及學習實現此功能的一些知識點。

        • 第一期文章:ThinkPHP自動加載Loader源碼分析
        • 第二期文章:ThinkPHP配置文件源碼分析

        一、單例模式

        在學習容器以及門面之前需要必須了解的倆個設計模式,單例模式、注冊樹模式。

        先對單例模式做一個簡單的說明。

        • 擁有一個構造函數,并且屬性為private
        • 擁有一個靜態成員變量來保存類的實例
        • 擁有一個靜態方法來訪問這個實例

        一下就是咔咔實現的一個簡單的單例模式,對照一下上面的三大特性看是否一致。

        靜態變量為instance

        擁有構造并且還是私有的

        最后一個就是有一個getInstance這個靜態方法

        ThinkPHP容器之單例模式接下來進行一下簡單的測試

        還是在index控制器中做測試,為了證實其類只被實例化過一次,調用了其四次

        ThinkPHP容器之單例模式訪問這個方法來看一下

        new-class只執行了一次,就直接證明了創建的類只實例化了一次。ThinkPHP容器之單例模式在這里咔咔之前有過一個疑問就是,這里的構造函數為什么要使用私有的屬性。

        你之前有過這個疑問嗎?咔咔帶你一起來解答一下

        在本類定義私有屬性的構造方法是為了防止其類在外部被實例化。

        當在外部實例化這個類就會報下圖的錯。

        ThinkPHP容器之單例模式那么為什么會在這里提一嘴單例模式呢!是因為在接下來的學習容器的源碼中會使用到

        例如下圖thinkphp/library/think/Container.php類中就存在一個獲取當前容器的實例。

        ThinkPHP容器之單例模式截止到這里單例模式就簡單的了解完了,了解單例模式也是為了更好的理解容器。

        堅持學習、堅持寫博、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大互聯網中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 九九热这里只有在线精品视| 国产午夜福利精品一区二区三区| 国产成人精品无码播放| 国产啪亚洲国产精品无码| 国产精品99久久久久久董美香| 国产精品乱码一区二区三区| 精品久久久久中文字幕日本| 欧美精品色婷婷五月综合| 骚片AV蜜桃精品一区| 成人精品视频99在线观看免费| 香蕉99久久国产综合精品宅男自| 日产精品久久久久久久性色| 国产精品久久久久天天影视| 欧美日激情日韩精品| 精品午夜国产人人福利| 亚洲国产美女精品久久久久∴| 国产亚洲精品精华液| 亚洲欧美精品SUV| 日本熟妇亚洲欧美精品区 | 国产成人精品男人的天堂538| 久久久国产精品福利免费| 91探花国产综合在线精品| 99久久精品国产高清一区二区 | 伊人久久精品无码av一区| 成人区人妻精品一区二区不卡网站| 亚洲国产精品自产在线播放| 精品国产一区二区三区色欲| 中文精品人人永久免费| 国产精品视频一区二区三区| 精品无码人妻一区二区三区| 国产精品国产三级国产潘金莲| 久久国产精品99精品国产987| 国产成人精品日本亚洲网址| 国产福利视精品永久免费| 国产在线精品一区二区不卡| 国产精品日本欧美一区二区| 国产精品福利一区二区| 欧美一区二区精品系列在线观看| 久久久精品免费国产四虎| 91精品福利在线观看| 亚洲午夜精品久久久久久人妖|