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