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();


猜你喜欢

转载自blog.csdn.net/kevlin_V/article/details/104032165