国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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

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

class DB{

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

}

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

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

Release Notes

Popular Entries