采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
Container中的属性都是protected 然后App继承Container容器类。 App为什么要继承Container容器类?
亲爱的同学您好
关键代码在这里, 这样做的话 会把 initialize初始化方法中 设置的一些 对象属性 再次绑定到APP类实例容器中。
Container类中的protected static $instance;是静态的。
App类继承Container类。那么App类和Container类都是维护同一个static $instance变量。
在代码运行的时候,最开始Container中$instance存储的是think\Container Object。
App类中的 initialize方法中,调用了static::setInstance($this);这个时候$instance中存储的对象变为think\App Object。
这个时候相当于Container::getInstance()和App::getInstance()得到的都是$instance中的值think\App Object。
App类中的 initialize方法中,$this->env->load($this->rootPath . '.env');相当于把env类的实例注册到了think\App Object对象的$instances(注册树)中。
Container::getInstance()->all()和App::getInstance()->all都能够查看到注册进来的env实例。
App继承Container类,在应用中获取注册树中的实例是通过Container::getinstance来获取的,但是注册env实例到注册树又是通过App类的 initialize来注册。
为什么App类继承Container。一会操作App类,一会儿操作Container类。没有搞懂为什么这样设计,有什么好处?
App类中的 initialize方法中,$this->env->load($this->rootPath . '.env');相当于把env类的实例注册到了think\App Object对象的$instances(注册树)中。 这句没看懂,咋个注册进去的???
登录后可查看更多问答,登录/注册
一门课掌握主流Tp5+最新Tp6框架底层,拥抱新潮流
898 14
1.0k 8
1.3k 7
1.0k 7
1.1k 7