亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Faade的驗證登入

??? 2019-06-14 12:06:37 384
????:<?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ù)加油。

??? ??

?? ??