摘要:<?php /** * 2019-04-21 */ // 数据库操作类 class Db { public function connect() {
<?php
/**
* 2019-04-21
*/
// 数据库操作类
class Db
{
public function connect()
{
return '数据库连接成功';
}
}
// 数据验证类
class Validate
{
public function check()
{
return '数据验证成功';
}
}
// 视图渲染类
class View
{
public function display()
{
return '登陆成功';
}
}
// 创建容器类
class Container
{
// 创建容器
public $instance = [];
// 绑定 参数一:类名,参数二:实例化匿名函数,将对象容器初始化
public function bind($abstract,Closure $course) {
// 将工具类绑定到容器中
$this->instance[$abstract] = $course;
// 类似于:
/*$this->instance['db'] = function (){
return new Db();
}*/
}
// 实现方法
public function make($abstract,$params = [])
{
// 查询类中的方法
return call_user_func_array($this->instance[$abstract],$params);
}
}
// 注册容器
$container = new Container();
// 添加Db类到容器中
$container->bind('db',function(){
return new Db();
});
// 添加验证类到容器中
$container->bind('validate',function(){
return new Validate();
});
// 添加视图类到容器中
$container->bind('view',function(){
return new View();
});
/*print_r($container->instance);
echo $container->make('db')->connect();*/
// 使用Facade 依赖注入 统一入口
class Facade
{
// 定义静态属性,存放存放容器类
protected static $instance = null;
// 创建方法传入Container类
public static function Container(Container $container)
{
return static::$instance = $container;
}
// 数据库连接方法
public static function connect()
{
return static::$instance->make('db')->connect();
}
// 验证类
public static function validate()
{
return static::$instance->make('validate')->check();
}
// 视图类
public static function view()
{
return static::$instance->make('view')->display();
}
}
// 使用Facade 实现Db,Validate,View,流程
// 将容器绑定到外观模式中
Facade::Container($container);
echo '<h2>使用Facade统一入口模式实现工具类中的三个方法</h2>';
echo Facade::connect(),'<br>';
echo Facade::validate(),'<br>';
echo Facade::view(),'<br>';
批改老师:西门大官人批改时间:2019-04-22 10:55:13
老师总结:代码最好自己写出来。不要拷贝老师的课件源码。