Blogger Information
Blog 5
fans 0
comment 0
visits 2217
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
容器注入与facaed—2018年5月28日12时28分
候磊的博客
Original
500 people have browsed it
容器是把完成类似功能的一系列工具类封装到容器类内,把工具类的类名与实现过程进行分离,类名作为参数实现不同类的调用
容器注入
1.创建容器类:设置绑定方法接收传入的工具类名和它的实例化闭包函数,放入关联数组对应,设置调用方法用类名取出对应实例化函数
class Container
{
	public $instance = [];
	public function bind($abstract, Closure $process)
	{
		$this->instance[$abstract] = $process;
	}
	public function make($abstract, $params=[])
	{
		return call_user_func_array($this->instance[$abstract],[]);
	}

}
2.服务绑定:实例化容器类,调用绑定方法传入工具类的类名称与实例化闭包函数
    $container = new Container(); 
    $container->bind('db', function(){
    	return new Db();
    });
    ......
3.容器依赖:客户端分别编写对应不同工具类的方法,传入工具类名给接收来的容器对象的调用方法,实现工具类的实例化
class User
{
	public function login(Container $container)
	{
		echo $container->make('db')->connect();
		 ......
	}
}

facaed
facaed把客户端的对应不同工具类的方法进行了进一步封装,初始化时传入容器类,直接用客户端类名调用不同操作对应的方法
class Facade
{
        protected static $container = null;
	public static function initialize(Container $container)
	{
		static::$container = $container;
	}
	public static function connect()
	{
		return static::$container->make('db')->connect();
	}
	 ......
}


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post