摘要:1.容器container.php<?php//容器:也叫服务容器//1.创建容器:本质就是一个类与它的实现绑定到一个关联数组//2.服务注册:初始化这个关联数组,将工具类绑定到容器中;//3.容器依赖:也叫依赖容器,调用的时候直接传一个容器对象即可,不用一个一个传具体对象class Db{ public function connect() &nbs
1.容器container.php
<?php
//容器:也叫服务容器
//1.创建容器:本质就是一个类与它的实现绑定到一个关联数组
//2.服务注册:初始化这个关联数组,将工具类绑定到容器中;
//3.容器依赖:也叫依赖容器,调用的时候直接传一个容器对象即可,不用一个一个传具体对象
class Db
{
public function connect()
{
return '数据库连接成功<br>';
}
}
class Validate
{
public function check()
{
return '数据验证成功<br>';
}
}
class View
{
public function display()
{
return '用户登录成功';
}
}
class Container
{
// 创建一个空数组来保存工具类以及实现方法
public $instance = [];
// protected $instance = [];
// $instance['类名']='类的实例化过程';
//将需要实例化的类与它的实现方法进行绑定:将对象容器初始化
public function bind($abstract, Closure $process)
{
$this->instance[$abstract] = $process;
// $this->instance['db'] = function(){
// return new Db();
// }
}
// 创建特定类的实例
public function make($abstract, $params = [])
{
return call_user_func_array($this->instance[$abstract], []);
}
}
//二、服务注册:其实就是调用容器的bind()将对象注册到容器中
$container = new Container();
//将Db类绑定到容器中
$container->bind('db', function () {
return new Db();
});
//将Validate类绑定到容器中
$container->bind('validate', function () {
return new Validate();
});
//将View类绑定到容器中
$container->bind('view', function () {
return new View();
});
2.facade
<?php
require 'container.php';
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();
}
public static function check()
{
return static::$container ->make('validate')->check();
}
public static function display()
{
return static::$container ->make('view')->display();
}
}
echo '<h1 style="color:red">简化后的,使用外观模式Facade门面统一调用</h1>';
Facade::initialize($container);
echo Facade::connect();
echo Facade::check();
echo Facade::display();

批改老师:天蓬老师批改时间:2019-05-15 13:31:20
老师总结:设计模型是前辈们, 对于一些常见问题总结出来的解决方案, 值得学习
