设计模式三:注册树模式
注册树模式:
通过将对象实例注册到一颗全局的对象树上,需要使用的时候直接从对象树上采摘的模式。
/** * 容器类 */ class Container{ //存储对线类 private $bindings = []; //注册 public function bind($abstract,$concrete = null){ $this->bindings[$abstract] = $concrete; } //创建 public function make($abstract,...$parms){ $object = $this->bindings[$abstract]; //闭包 if($object instanceof Closure){ return $object(); } if(!is_object($object)){ $object = new $object(...$parms); } return $object; } //删除 public function delete($abstract){ unset($this->bindings[$abstract]); } } class A { public function boot(){ echo 'A类的boot方法'; } } class B { public function boot(){ echo 'B类的boot方法'; } } //注册到注册树-》一般是全局加载的时候调用 $container = new Container(); $container->bind('A',new A()); $container->bind('B',new B()); //调用A类的方法 $container->make('A')->boot();