什么是容器(Container)?
容器是一个统一管理tp框架内置类以及自定义类的一个类,主要运用单列模式、注册树模式、依赖注入、反射机制以及工厂模式来实现对类的绑定、获取、实例化等一系列操作;
1、单例子模式(在项目中创建一个唯一的实力对象):一个类 有一个私有属性的构造方法 一个静态的成员变量 一个可访问的方法来实例化对象;
2、注册树模式: 通过将对象实例注册到一个全局的对象树上,需要使用的时候从对象树上采取下来;
3.工厂模式(方便管理):定义一个接口,接口约束一个使用频率高的方法名(无方法体),在其他对象中需要使用到这个方法,但是操作逻辑又不同,那么这个时候在其类中引入接口,并且拥有一个同名的方法,该方法就可以执行所属类需要的逻辑了;
4.依赖注入:依赖注入其实本质上是指对类的依赖通过构造器完成自动注入(当前类依赖于注入类,目的就是为了更好地去使用注入类的方法、属性),理解如下代码注释;
/**
* tp6BaceController基类的构造方法
* @access public
* @param App $app 应用对象
*/
public function __construct(App $app) // BaceController构造方法注入tp框架的应用类App,BaceController类就依赖于App应用类
{
$this->app = $app;
$this->request = $this->app->request;
// 控制器初始化
$this->initialize();
}
5.反射机制(ReflectionClass)重点:根据标识(可以是文件路径或者是别名)去获取类的方法、注释、成员变量等等信息、或对类进行实例化;