摘要:<?php //container 代碼 class Db { public function connect() { return '數(shù)據(jù)庫連接成功<br/>'; } } //數(shù)據(jù)驗證類 class Validate { public function che
<?php //container 代碼 class Db { public function connect() { return '數(shù)據(jù)庫連接成功<br/>'; } } //數(shù)據(jù)驗證類 class Validate { public function check() { return '數(shù)據(jù)驗證成功<br/>'; } } //視圖類 class View { public function display() { return '用戶登錄成功<br/>'; } } //以上三個類當(dāng)做工具類 //創(chuàng)建容器類 class Container { //創(chuàng)建一個空數(shù)組來保存工具類以及實現(xiàn)的方法 protected $instance = []; //將需要實例化的類與它的實現(xiàn)方法(怎么實例化)進(jìn)行綁定:將對象容器初始化 public function bind($class, Closure $new)//Closure $new定義一個閉包方法 { $this->instane[$class]=$new; /*$this->instance['db']=function(){ //傳入的方法就是如何實例化對象, return new db('localhost','root'); }*/ } public function make($class,$params=[])//$params表示要傳入的參數(shù) 對外調(diào)用 { //call_user_func_array()回調(diào)一個函數(shù), return call_user_func_array($this->instance[$class], []]); } } $container = new Container(); //將類綁定到容器中 $container->bind('db',function(){ return new Db(); }); $container->bind('validate',function(){ return new Validate(); }); $container->bind('view',function(){ return new View(); }); //Facade代碼 <?php require 'container.php'; class Facade { //保存容器對象 protected static $container = null; //創(chuàng)建初始化方法,給容器對象賦值 public static function initalize(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 '<h3>優(yōu)化后的門面統(tǒng)一調(diào)用</h3>'; Facade::initalize($container);//進(jìn)行初始化 echo Facade::connect(); echo Facade::check(); echo Facade::display();
批改老師:查無此人批改時間:2019-03-18 09:14:53
老師總結(jié):寫的不錯。門面模式的技巧,這個可以說說你的理解。老師才知道你學(xué)的怎么樣。繼續(xù)加油。