abstrak:<?php//容器:也叫服務(wù)容器(Ioc)//基本思想 拿來就用,最大限度簡化外部調(diào)用,類似于即插即用//創(chuàng)建容器:本質(zhì)就是將一個(gè)類與它的實(shí)現(xiàn)綁定到一個(gè)關(guān)聯(lián)的數(shù)組;//服務(wù)注冊:初始化這個(gè)關(guān)聯(lián)數(shù)組,將工具類綁定到容器中;//容器依賴:也叫依賴容器,調(diào)用的時(shí)候直接傳一個(gè)容易對象即可,不用再一個(gè)一個(gè)傳具體對象;//數(shù)據(jù)庫操作類class Db{ //數(shù)據(jù)庫連接 public
<?php
//容器:也叫服務(wù)容器(Ioc)
//基本思想 拿來就用,最大限度簡化外部調(diào)用,類似于即插即用
//創(chuàng)建容器:本質(zhì)就是將一個(gè)類與它的實(shí)現(xiàn)綁定到一個(gè)關(guān)聯(lián)的數(shù)組;
//服務(wù)注冊:初始化這個(gè)關(guān)聯(lián)數(shù)組,將工具類綁定到容器中;
//容器依賴:也叫依賴容器,調(diào)用的時(shí)候直接傳一個(gè)容易對象即可,不用再一個(gè)一個(gè)傳具體對象;
//數(shù)據(jù)庫操作類
class Db
{
//數(shù)據(jù)庫連接
public function connect()
{
return '數(shù)據(jù)庫連接成功<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)建一個(gè)空數(shù)組用來保存工具類以及時(shí)實(shí)現(xiàn)方法
protected $instance = [];
//將需要實(shí)例化的類與它的實(shí)現(xiàn)方法進(jìn)行綁定;將對象容器初始化
public function bind($abstract, Closure $process)
{
$this->instance[$abstract] = $process;
}
//創(chuàng)建特定類的實(shí)例
public function make($abstract,$params=[])
{
return call_user_func_array($this->instance[$abstract],[]);
}
}
/*********************************/
//服務(wù)注冊:其實(shí)就是調(diào)用容器的bind()將對象注冊到容器中
$container = new Container();
//將Db類綁定到容器中
$container->bind('db',function(){
return new Db();
});
//將Validata類綁定到容器中
$container->bind('validate',function(){
return new Validate();
});
//將View類綁定到容器中
$container->bind('view',function(){
return new View();
});
<?php
//在外觀模式facade中,創(chuàng)建一個(gè)初始化方法事先注入容器,來簡化代碼
require 'demo.php';
class Facade
{
//保存容器對象
protected static $container = null;
//創(chuàng)建初始化方法 給容器對象賦值
public static function initialize(Container $container)
{
static::$container = $container;
}
//連接數(shù)據(jù)庫
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();
}
}
//客戶端調(diào)用
echo '<h3>簡化后facade調(diào)用:</h3>';
Facade::initialize($container);
echo Facade::connect();
echo Facade::check();
echo Facade::display();
Guru membetulkan:查無此人Masa pembetulan:2019-06-10 09:07:52
Rumusan guru:完成的不錯(cuò)。編程有很多設(shè)計(jì)模式,多了解,對以后工作幫助很大。繼續(xù)加油。