abstract:<?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>';
Correcting teacher:西门大官人Correction time:2019-04-22 10:55:13
Teacher's summary:代码最好自己写出来。不要拷贝老师的课件源码。