亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

容器依賴注入和Thinkphp中Facade應(yīng)用

Original 2019-03-16 17:07:35 264
abstract:<?php class DB{ public function connect() { return '鏈接數(shù)據(jù)庫(kù)!'; } } class Validate{ public function check() { return '驗(yàn)證成功!'; }
<?php

class DB{

	public function connect()
	{
		return '鏈接數(shù)據(jù)庫(kù)!';
	}

}

class Validate{

	public function check()
	{
		return '驗(yàn)證成功!';
	}

}

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. 先用容器對(duì)登陸操作進(jìn)行解耦

  2. 再通過(guò)Facade門(mén)面對(duì)操作進(jìn)一步簡(jiǎn)化。讓用戶知其然不知其所以然。

Release Notes

Popular Entries