abstract://virefy.php<?php //數(shù)據(jù)庫連接類 class Db{ public $databaseType = null;  
//virefy.php
<?php
//數(shù)據(jù)庫連接類
class Db{
public $databaseType = null;
//獲得數(shù)據(jù)庫類型
public function getType($databaseType){
$this->databaseType = $databaseType;
return $this;
}
//驗證數(shù)據(jù)庫類型
public function conn(){
if($this->databaseType == 'mysql'){
return '數(shù)據(jù)庫連接成功';
}else{
return '數(shù)據(jù)庫連接失敗';
}
}
}
//數(shù)據(jù)庫驗證類
class Validate{
protected $username;
protected $password;
//獲取數(shù)據(jù)庫用戶名和密碼
public function getValid($username,$password){
$this->username = $username;
$this->password = $password;
return $this;
}
//驗證數(shù)據(jù)庫用戶名和密碼
public function check(){
if($this->username == 'root' && $this->password == 'root'){
return '驗證成功'; }else{ return '驗證失敗';
}
}
}
//數(shù)據(jù)顯示類
class User{
protected $username;
protected $password;
//獲取用戶名和密碼
public function getUser($username,$password){
$this->username = $username;
$this->password = $password;
return $this;
}
//驗證登錄用戶名和密碼
public function login(){
if($this->username == 'admin' && $this->password == 'admin'){
return '用戶登錄成功';
}else{
return '用戶登錄失敗';
}
}
}
//container.php
<?php
require 'virefy.php';
class Container{
//聲明對象數(shù)組
public $instance = [];
//綁定類
public function bind($classType,closure $closeFun){
$this->instance[$classType] = $closeFun;
}
//調(diào)用容器綁定類方法
public function make($classType,$params = []){
//通過數(shù)組賦值的匿名函數(shù)返回類對象
return call_user_func_array($this->instance[$classType],$params);
}
}
//聲時一個容器實例
$container = new Container;
//綁定Db
$container->bind('Db',function(){ return new Db; });
//綁定Validate
$container->bind('Validate',function(){ return new Validate; });
//綁定User $container->bind('User',function(){ return new User; });
<?php
require 'container.php';
class Facade{
//聲明容器類變量
public static $container = null;
//構(gòu)造容器類賦值
public static function init(Container $container){
self::$container = $container;
}
public static function conn($databaseType){
//返回Db類conn方法
return self::$container->make('Db')->getType($databaseType)->conn();
}
public static function check($username,$password){
//返回Validate類check方法
return self::$container->make('Validate')->getValid($username,$password)->check(); }
public static function login($username,$password){
//返回User類display方法
return self::$container->make('User')->getUser($username,$password)->login();
}
}
//Facade類初始化容器
Facade::init($container);
//Facade類驗證數(shù)據(jù)庫類型
echo Facade::conn('mysql').'<br>';
//Facade類驗證數(shù)據(jù)庫用戶和密碼
echo Facade::check('root','root').'<br>';
//Facade類驗證登錄用戶和密碼
echo Facade::login('admin','admin').'<br>';
Correcting teacher:天蓬老師Correction time:2019-11-01 14:41:21
Teacher's summary:這是用最簡單的方式在模擬, 實際項目中, 遠(yuǎn)比這個復(fù)雜