返回容器依赖注入和......登陆

容器依赖注入和Thinkphp中Facade应用

烛光2019-03-16 17:08:03177
<?php

class DB{

	public function connect()
	{
		return '链接数据库!';
	}

}

class Validate{

	public function check()
	{
		return '验证成功!';
	}

}

class Login{

	public function success()
	{
		return '登录成功!';
	}

}

class Container{

	public $bind = [];

	public function bind($abstract, Closure $process){
		$this->bind[$abstract] = $process;
	}

	public function make($abstract, $params=[]){
		return call_user_func_array($this->bind[$abstract], []);
	}

}

class Facade{

	protected static $container = null;

	public static function initialize(Container $container)
	{
		self::$container = $container;
	}

	public static function connect(){
		return self::$container->make('DB')->connect();
	}

	public static function check(){
		return self::$container->make('Validate')->check();
	}

	public static function success(){
		return self::$container->make('Login')->success();
	}

}

$container = new Container();
$container->bind('DB', function(){
	return new DB();
});
$container->bind('Validate', function(){
	return new Validate();
});
$container->bind('Login', function(){
	return new Login();
});

Facade::initialize($container);
echo Facade::connect();
echo '<br>';
echo Facade::check();
echo '<br>';
echo Facade::success();


// echo $container->make('DB')->connect();
// echo '<br>';
// echo $container->make('Validate')->check();
// echo '<br>';
// echo $container->make('Login')->success();

案例描述:

  1. 先用容器对登陆操作进行解耦

  2. 再通过Facade门面对操作进一步简化。让用户知其然不知其所以然。

最新手记推荐

• 用composer安装thinkphp框架的步骤• 省市区接口说明• 用thinkphp,后台新增栏目• 管理员添加编辑删除• 管理员添加编辑删除

全部回复(0)我要回复

暂无评论~
  • 取消回复发送