服务容器(Service Container)是一个用于管理类依赖和执行依赖注入的强大工具。 几乎所有的服务容器绑定都是在 服务提供器 中完成的
注意:
- 如果一个类没有基于任何接口那么就没有必要将其绑定到容器。容器并不需要被告知如何构建对象,因为它会使用PHP的反射服务自动解析出具体的对象。
依赖注入
依赖注入的实质是通过构造函数
__construct将类依赖注入到类中. 有些情况下也可以通过setter方法
什么叫依赖?
如果A类的功能实现需要B类的支持,就称A类依赖于B类。比如汽车需要车轮,就说汽车依赖车轮
什么叫注入?
一般是在类的构造方法里,传入另一个类的对象做为参数。比如汽车类A的构造方法,包含车轮B实例的参数
什么叫容器?
容器一般包含两个方法:
bind和make
bind: 绑定”所依赖类B的描述Key”和”负责实例化依赖类B的闭包函数”public static function bind($name, Callable $resolver) {static::$registry[$name] = $resolver;}
make: 执行”所依赖类B的描述Key”所绑定的”实例化依赖类B的闭包函数”public static function make($name) { if (isset(static::$registry[$name])) { $resolver = static::$registry[$name]; return $resolver(); } }绑定
解析
