abstrait:<?php /** * 2019-04-21 */ // 數(shù)據(jù)庫(kù)操作類 class Db { public function connect() {
<?php /** * 2019-04-21 */ // 數(shù)據(jù)庫(kù)操作類 class Db { public function connect() { return '數(shù)據(jù)庫(kù)連接成功'; } } // 數(shù)據(jù)驗(yàn)證類 class Validate { public function check() { return '數(shù)據(jù)驗(yàn)證成功'; } } // 視圖渲染類 class View { public function display() { return '登陸成功'; } } // 創(chuàng)建容器類 class Container { // 創(chuàng)建容器 public $instance = []; // 綁定 參數(shù)一:類名,參數(shù)二:實(shí)例化匿名函數(shù),將對(duì)象容器初始化 public function bind($abstract,Closure $course) { // 將工具類綁定到容器中 $this->instance[$abstract] = $course; // 類似于: /*$this->instance['db'] = function (){ return new Db(); }*/ } // 實(shí)現(xiàn)方法 public function make($abstract,$params = []) { // 查詢類中的方法 return call_user_func_array($this->instance[$abstract],$params); } } // 注冊(cè)容器 $container = new Container(); // 添加Db類到容器中 $container->bind('db',function(){ return new Db(); }); // 添加驗(yàn)證類到容器中 $container->bind('validate',function(){ return new Validate(); }); // 添加視圖類到容器中 $container->bind('view',function(){ return new View(); }); /*print_r($container->instance); echo $container->make('db')->connect();*/ // 使用Facade 依賴注入 統(tǒng)一入口 class Facade { // 定義靜態(tài)屬性,存放存放容器類 protected static $instance = null; // 創(chuàng)建方法傳入Container類 public static function Container(Container $container) { return static::$instance = $container; } // 數(shù)據(jù)庫(kù)連接方法 public static function connect() { return static::$instance->make('db')->connect(); } // 驗(yàn)證類 public static function validate() { return static::$instance->make('validate')->check(); } // 視圖類 public static function view() { return static::$instance->make('view')->display(); } } // 使用Facade 實(shí)現(xiàn)Db,Validate,View,流程 // 將容器綁定到外觀模式中 Facade::Container($container); echo '<h2>使用Facade統(tǒng)一入口模式實(shí)現(xiàn)工具類中的三個(gè)方法</h2>'; echo Facade::connect(),'<br>'; echo Facade::validate(),'<br>'; echo Facade::view(),'<br>';
Professeur correcteur:西門大官人Temps de correction:2019-04-22 10:55:13
Résumé du professeur:代碼最好自己寫出來(lái)。不要拷貝老師的課件源碼。