DI依賴注入和容器

優點:減少類和類之間的關係
容器:
1.降低類與類之間的耦合度
2.實現惰性加載(需要哪個類再創建哪一個類)
3.便於管理

<?php
//輪胎類=》汽車類
class LunTai
{
    function roll()
    {
        echo "輪胎在轉動\n";
    }
}

//class BMW
//{
//    public function run()
//    {
//        $luntai = new LunTai();
//        $luntai->roll();
//        echo "開着寶馬玩\n";
//    }
//}
//普通方式
//$bmw = new BMW();
//$bmw->run();

//依賴注入
class BMW
{
    protected $luntai;
    function __construct($luntai)
    {
        $this->luntai = $luntai;
    }

    function run()
    {
        $this->luntai->roll();
        echo "開着寶馬玩\n";
    }
}
//
//$luntai = new LunTai();
//$bmw = new BMW($luntai);
//$bmw->run();

//容器
class Container
{
    //存放所綁定的類
    static $register = [];

    //綁定函數
    static function bind($className,Closure $closure)
    {
        self::$register[$className] = $closure;
    }

    //創建對象函數
    static function make($name)
    {
        $closure = self::$register[$name];
        return $closure();
    }
}

Container::bind('LunTai',function (){
    return new LunTai();
});
Container::bind('BMW',function (){
    return new BMW(Container::make('LunTai'));
});


$bmw = Container::make('BMW');
$bmw->run();


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章