php容器概念,深入thinkphp5.1之Container容器

作为tp框架或者说任何一种框架的核心思想,container类基本上算是框架的灵魂所在。

不得不说的注册树

在thinkphp框架中实现容器概念的无非是:注册树模式+单例模式的结合,单例模式咱就不进行细讲了,应该看过单例的代码的人都基本上能很轻松的掌握,这里讲一下注册树模式。思想:其实注册树和单例模式的思想基本上相同,但是我们单例模式只是针对一个单独的实例进行操作,注册树更像一个盒子,将要用或者正在调用的实例放在盒子中,同一进程中的下一次请求进入,就不用再去实例化,而是直接在盒子里面进行查找返回。

简单的一个例子:通过类的标识获取到类的实例

72635dfe523b

72635dfe523b

其实核心思想很简单,只要将代码管理做到规范,面试的时候就可以和面试官将我深入理解面向对象编程。反复琢磨container类中的代码,你会发现真的不是随随便便的代码都能做框架的代码,这里面的思想和代码质量与咱们的业务代码真的不是一个档次,虽然也不能这么来比较,就当调侃一下。

以上代码基本上就是一个最简陋的注册树代码了。

facade门面模式

本来想用一篇单独文章来写tp5中的门面模式,但是感觉凑不到这么多字数,为了文章的质量,还是决定放在这里来写。门面模式:静态调用类中的非静态方法。挺起来是很高大上的,很多一到三年的开发者对这个门面模式都是不知云云的,要比别人更快的成长,咱就得比别人涉猎得更多。

这里我就不写案例了,直接讲解框架案例

72635dfe523b

此处调用thinkphp中的内置方法

__callstatic:当类中未发现被调用的静态方法将会调用此函数

__call_user_func_array:调用传入实例类中的非静态方法

72635dfe523b

72635dfe523b

到这里就是类中的门面模式

Container类的解读

在上面咱们看到了,其实门面模式如果具体划分也可以不属于tp5的门面模式,最下面的衔接语句是:return Container::getInstance()->make($class,$args,$newInstance):此处的make方法实际相当于注册数模式的get和set方法的结合,make就是container类的核心

主要类:__make的解读下面是图解

72635dfe523b

对应的代码解读

72635dfe523b

72635dfe523b

到此基本上类container解读基本完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值