亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

使用Facde簡單案例

原創(chuàng) 2019-03-31 17:50:00 277
摘要:db類class Db{     protected $content=null;     public function __construct($config)     {      &

db類

class Db{
    protected $content=null;
    public function __construct($config)
    {
        $dns = $config['type'].':host='.$config['host'].';dbname='.$config['dbname'].';charset='.$config['charset'];
        $pdo=new PDO($dns,$config['uname'],$config['pwd']);
        $this->content = $pdo;
    }
    public function lanjie(){
        echo '數(shù)據(jù)庫連接成功';
    }
}

validate 類

class Validate{
    public function vali(){
        return '驗證成功';
    }
}

view 類

class View{
    public function jump(){
        return '跳轉(zhuǎn)到首頁了';
    }
}


container類

require 'Db.php';
require 'Validate.php';
require 'View.php';
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],$params);
    }
}
$container = new Container();
////綁定db類
$config=['type'=>'mysql','host'=>'127.0.0.1','dbname'=>'test','charset'=>'utf8','uname'=>'root','pwd'=>'root'];
//綁定db
$container->bind('Db',function ()use($config){
    return new Db($config);
});
//綁定驗證類
$container->bind('Validate',function (){
    return new Validate();
});
//綁定視圖類
$container->bind('View',function (){
    return new View();
});

facde 類

require 'Container.php';
class Facde{
    protected static $container =null;
    public static function initialize(Container $container){
        static::$container=$container;
    }
    //連接數(shù)據(jù)庫
    public static function content(){
        return static::$container->make('Db',[])->lanjie();
    }
    //驗證
    public static function Validate(){
        return static::$container->make('Validate')->vali();
    }
    //試圖
    public static function View(){
        return static::$container->make('View')->jump();
    }
}
echo "<h1>使用facde</h1>";
Facde::initialize($container);
echo Facde::content(),'<br>';
echo Facde::Validate(),'<br>';
echo Facde::View(),'<br>';

效果圖:

faced.png

總結(jié):先把單獨的工具類放入 容器中,事先綁定。然后在 門臉類中用一個靜態(tài)屬性來保存容器類的實例 ,然后 使用一個初始化方法 依賴注入 容                器類, 門臉類中的 靜態(tài)方法就是工具類的方法。這樣就能引入 門臉類后直接靜態(tài)調(diào)用了


批改老師:天蓬老師批改時間:2019-04-01 10:03:22
老師總結(jié):所謂簡化, 本質(zhì)上將一些常用操作,封裝到一個靜態(tài)方法中調(diào)用

發(fā)佈手記

熱門詞條