????:<?php /** * 外觀模式:facade,也叫門面模式 * 1.用一句來說:就是將操作進行封裝,對外提供一個統(tǒng)一的接口 * 2.因為操作可能分布在多個類中,而剛才學(xué)過的容器恰好可以將不同的類與實現(xiàn)封裝起來 * 3.所以外觀模式與依賴容器是黃金搭檔,經(jīng)常會放在一起使用 */
<?php /** * 外觀模式:facade,也叫門面模式 * 1.用一句來說:就是將操作進行封裝,對外提供一個統(tǒng)一的接口 * 2.因為操作可能分布在多個類中,而剛才學(xué)過的容器恰好可以將不同的類與實現(xiàn)封裝起來 * 3.所以外觀模式與依賴容器是黃金搭檔,經(jīng)常會放在一起使用 */ /** * 用戶登錄的操作涉及三個操作 * 1.連接數(shù)據(jù)庫 * 2.用戶數(shù)據(jù)驗證 * 3.輸出提示信息 */ require 'container.php'; //創(chuàng)建Facade類,實現(xiàn)以上三個功能 class Facade { //連接數(shù)據(jù)庫 public static function connect(Container $container) { return $container->make('db')->connect(); } //用戶數(shù)據(jù)驗證 public static function check(Container $container) { return $container->make('validate')->check(); } //輸出提示信息 public static function display(Container $container) { return $container->make('view')->display(); } } //客戶端調(diào)用 echo Facade::connect($container); echo Facade::check($container); echo Facade::display($container); //可以在外觀模型中使用初始化方法事先注入容器對象,來簡化客戶端調(diào)用
container代碼
<?php //數(shù)據(jù)庫操作類 class Db { //數(shù)據(jù)庫連接 public function connect() { return '數(shù)據(jù)庫連接成功<br>'; } } //數(shù)據(jù)驗證類 class Validate { //數(shù)據(jù)驗證 public function check() { return '數(shù)據(jù)驗證成功<br>'; } } //視圖圖 class View { //內(nèi)容輸出 public function display() { return '用戶登錄成功'; } } /******************************************************************************/ //一.創(chuàng)建容器類 class Container { //創(chuàng)建屬性,用空數(shù)組初始化,該屬性用來保存類與類的實例化方法 public $instance = []; //初始化實例數(shù)組,將需要實例化的類,與實例化的方法進行綁定 public function bind($abstract, Closure $process) { //鍵名為類名,值為實例化的方法 $this->instance[$abstract] = $process; } //創(chuàng)建類實例 public function make($abstract, $params=[]) { return call_user_func_array($this->instance[$abstract],[]); } } //二、服務(wù)綁定: 將類實例注冊到容器中 $container = new Container(); //將Db類綁定到容器中 $container->bind('db', function(){ return new Db(); }); //將Validate類實例綁定到容器中 $container->bind('validate', function(){ return new Validate(); }); //將View類實例綁定到容器中 $container->bind('view', function(){ return new View(); });
?? ???:查無此人?? ??:2019-06-14 14:21:46
???? ??:完成的不錯?;A(chǔ)上php已經(jīng)入門了,以后多練習(xí)實戰(zhàn)項目。繼續(xù)加油。