站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

ThinkPHP容器之單例模式

本文主要針對框架內(nèi)部容器以及門面的實現(xiàn)做為基準點來實現(xiàn),

前言

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

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

一、單例模式

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

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

  • 擁有一個構(gòu)造函數(shù),并且屬性為private
  • 擁有一個靜態(tài)成員變量來保存類的實例
  • 擁有一個靜態(tài)方法來訪問這個實例

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

靜態(tài)變量為instance

擁有構(gòu)造并且還是私有的

最后一個就是有一個getInstance這個靜態(tài)方法

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

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

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

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

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

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

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

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

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

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

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

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
亚洲线精品一区二区三区| 国产老女人精品免费视频| 久久综合精品视频| 亚洲精品视频在线看| 日韩网红少妇无码视频香港| 亚洲国产成人久久精品软件| 久久精品国产亚洲AV麻豆~| 人妻少妇无码精品视频区| 国产精品自在在线午夜福利| 亚洲熟妇AV日韩熟妇在线| 四虎成人精品在永久免费| 青青国产精品视频| 国产精品久久久久久福利漫画| 99re热这里只有精品18| 丰满人妻熟妇乱又伦精品视| 538国产精品一区二区在线| 日韩版码免费福利视频| 日韩福利视频精品专区| 国产精品极品美女自在线观看 | 无码精品一区二区三区| 91亚洲国产成人久久精品网站| 久久精品国1国二国三| 国内精品久久久人妻中文字幕| 国产亚洲精品影视在线产品| 精品国产一级在线观看| 国产精品亚洲高清一区二区| 国产69精品久久久久9999| 亚洲视频在线精品| 亚洲精品专区在线观看| 尤物TV国产精品看片在线| 国产精品日韩专区| 日韩在线免费看网站| 日韩不卡免费视频| 精品香蕉伊思人在线观看| 精品91一区二区三区| 午夜精品久久久久久| 四虎成人精品在永久在线| 精品人妻AV区波多野结衣| www.亚洲精品.com| 精品国产三级a乌鸦在线观看| 精品国产综合区久久久久久|