abstract:1.容器container.php<?php//容器:也叫服務容器//1.創(chuàng)建容器:本質就是一個類與它的實現(xiàn)綁定到一個關聯(lián)數(shù)組//2.服務注冊:初始化這個關聯(lián)數(shù)組,將工具類綁定到容器中;//3.容器依賴:也叫依賴容器,調用的時候直接傳一個容器對象即可,不用一個一個傳具體對象class Db{ public function connect() &nbs
1.容器container.php
<?php
//容器:也叫服務容器
//1.創(chuàng)建容器:本質就是一個類與它的實現(xiàn)綁定到一個關聯(lián)數(shù)組
//2.服務注冊:初始化這個關聯(lián)數(shù)組,將工具類綁定到容器中;
//3.容器依賴:也叫依賴容器,調用的時候直接傳一個容器對象即可,不用一個一個傳具體對象
class Db
{
public function connect()
{
return '數(shù)據(jù)庫連接成功<br>';
}
}
class Validate
{
public function check()
{
return '數(shù)據(jù)驗證成功<br>';
}
}
class View
{
public function display()
{
return '用戶登錄成功';
}
}
class Container
{
// 創(chuàng)建一個空數(shù)組來保存工具類以及實現(xiàn)方法
public $instance = [];
// protected $instance = [];
// $instance['類名']='類的實例化過程';
//將需要實例化的類與它的實現(xiàn)方法進行綁定:將對象容器初始化
public function bind($abstract, Closure $process)
{
$this->instance[$abstract] = $process;
// $this->instance['db'] = function(){
// return new Db();
// }
}
// 創(chuàng)建特定類的實例
public function make($abstract, $params = [])
{
return call_user_func_array($this->instance[$abstract], []);
}
}
//二、服務注冊:其實就是調用容器的bind()將對象注冊到容器中
$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();
});
2.facade
<?php
require 'container.php';
class Facade
{
protected static $container = null;
public static function initialize(Container $container)
{
static::$container = $container;
}
public static function connect()
{
return static::$container ->make('db')->connect();
}
public static function check()
{
return static::$container ->make('validate')->check();
}
public static function display()
{
return static::$container ->make('view')->display();
}
}
echo '<h1 style="color:red">簡化后的,使用外觀模式Facade門面統(tǒng)一調用</h1>';
Facade::initialize($container);
echo Facade::connect();
echo Facade::check();
echo Facade::display();
Correcting teacher:天蓬老師Correction time:2019-05-15 13:31:20
Teacher's summary:設計模型是前輩們, 對于一些常見問題總結出來的解決方案, 值得學習