abstract:<?php //container.php //數(shù)據(jù)庫(kù)操作類 class Db { public function connect() { return '數(shù)據(jù)庫(kù)連接成功<br>'; } } //數(shù)據(jù)驗(yàn)證類 class Validate { public function&nbs
<?php //container.php //數(shù)據(jù)庫(kù)操作類 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 '用戶登錄成功'; } } //創(chuàng)建容器類 class Container { //創(chuàng)建屬性,用空數(shù)組初始化 public $instance = []; 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(); }); ?> <?php //facade require 'container.php'; class Facade { //創(chuàng)建成員屬性保存容器對(duì)象 protected static $container = null; //創(chuàng)建初始化方法為容器對(duì)象賦值 public static function initialize(Container $container) { static::$container = $container; } //連接數(shù)據(jù)庫(kù) public static function connect() { return static::$container->make('db')->connect(); } //用戶數(shù)據(jù)驗(yàn)證 public static function check() { return static::$container->make('validate')->check(); } //輸出提示信息 public static function display() { return static::$container->make('view')->display(); } } Facade::initialize($container); echo Facade::connect(); echo Facade::check(); echo Facade::display();
Correcting teacher:天蓬老師Correction time:2018-12-17 17:32:56
Teacher's summary:門面也叫外觀模式, 可以將類中方法的調(diào)用方式統(tǒng)一, 但也會(huì)帶來(lái)性能的損失, 不必濫用