摘要:<?php//容器:也叫服務容器(Ioc)//基本思想 拿來就用,最大限度簡化外部調用,類似于即插即用//創(chuàng)建容器:本質就是將一個類與它的實現(xiàn)綁定到一個關聯(lián)的數(shù)組;//服務注冊:初始化這個關聯(lián)數(shù)組,將工具類綁定到容器中;//容器依賴:也叫依賴容器,調用的時候直接傳一個容易對象即可,不用再一個一個傳具體對象;//數(shù)據(jù)庫操作類class Db{ //數(shù)據(jù)庫連接 public
<?php
//容器:也叫服務容器(Ioc)
//基本思想 拿來就用,最大限度簡化外部調用,類似于即插即用
//創(chuàng)建容器:本質就是將一個類與它的實現(xiàn)綁定到一個關聯(lián)的數(shù)組;
//服務注冊:初始化這個關聯(lián)數(shù)組,將工具類綁定到容器中;
//容器依賴:也叫依賴容器,調用的時候直接傳一個容易對象即可,不用再一個一個傳具體對象;
//數(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
{
//內容輸出
public function display()
{
return '用戶登錄成功';
}
}
/*********************************/
//創(chuàng)建容器類
class Container
{
//創(chuàng)建一個空數(shù)組用來保存工具類以及時實現(xiàn)方法
protected $instance = [];
//將需要實例化的類與它的實現(xiàn)方法進行綁定;將對象容器初始化
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],[]);
}
}
/*********************************/
//服務注冊:其實就是調用容器的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)建一個初始化方法事先注入容器,來簡化代碼
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ù)驗證
public static function check()
{
return static::$container->make('validate')->check();
}
//輸入提示
public static function display()
{
return static::$container->make('view')->display();
}
}
//客戶端調用
echo '<h3>簡化后facade調用:</h3>';
Facade::initialize($container);
echo Facade::connect();
echo Facade::check();
echo Facade::display();
批改老師:查無此人批改時間:2019-06-10 09:07:52
老師總結:完成的不錯。編程有很多設計模式,多了解,對以后工作幫助很大。繼續(xù)加油。