摘要:<?php class DB{ public function connect() { return '链接数据库!'; } } class Validate{ public function check() { return '验证成功!'; }
<?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();案例描述:
先用容器对登陆操作进行解耦
再通过Facade门面对操作进一步简化。让用户知其然不知其所以然。