谁能给我解释一下YII2的依赖注入...


已经看过一片文章了: http://www.yiichina.com/tutorial/112 ,但是没看懂,谁能稍微通俗一点介绍一下...十分感谢,么么哒

service-locator yii yii2 php di

矿泉水兑女未水 8 years, 11 months ago

可以参考phalcon框架的文档,里面介绍了依赖注入的部分,非常通俗易懂。

梅之森千世 answered 8 years, 11 months ago


 public static function getDb()
{
        return Yii::$app->db;
}

这不就是么?

阿斯顿*马丁 answered 8 years, 11 months ago

转自ThinkPHP:
依赖注入是一种解耦组件之间依赖关系的设计模式,可以用来取代全局变量.


 class Factory {
    public static function getDb(){
        include "./Lib/Db.php";
        return new Db("localhost","root","123456","test");
    }
}
class example {
    private $_db;
    function getList(){
        $this->_db->query("...");
    }
    //从外部注入db连接
    function setDb($connection){
        $this->_db = $connection;
    }
}
$example = new example(); //example类依赖数据库
$example->setDb(Factory::getDb()); //注入数据库连接(依赖注入)
$example->getList(); //访问数据库,读取数据

这样一来,example类完全与外部类解除耦合了.
通过从外部调用example类的setDb方法,将连接实例直接注入进去,这样example类完全不用关心数据库连接怎么生成的了.这就叫依赖注入,实现不是在代码内部创建依赖关系,而是让其作为一个参数传递,使得程序更容易维护,降低代码的耦合度.
创建被调用者(Db类)的工作不再由调用者(example类)来完成,因此称为控制反转.
创建被调用者的工作由Factory类来完成,然后注入调用者(传参),因此也称为依赖注入.

newday answered 8 years, 11 months ago

Your Answer