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