依赖注入(DI)与控制反转(IoC)

发布时间:2020/04/19 编辑:天马行空 阅读(132)

依赖注入:容器动态地将某种依赖关系注入到组件之中,简单理解就是不需要在程序中直接去创建对象而是通过外部创建好之后注入进来。


控制反转:控制权由应用代码中转到了外部容器,控制权的转移就是所谓的反转。


依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。

<?php
class SomeComponent
{
    protected $_di;
    public function __construct($di)
    {
        $this->_di = $di;
    }
 
    public function someRequest()
    {
        // 请求实例
        $connection = $this->_di->get('request');
    }
 
    public function someOtherRequest()
    {
        // 请求实例
        $connection = $this->_di->get('request');
        // 过滤器实例
 
        $filter = $this->_di->get('filter');
    }
}
 
$di = new DI();
//在容器中注册一个request服务
$di->set('request', function() {
    return new Request(array(
        "test" => "test"
    ));
});
 
//在容器中注册一个filter服务
$di->set('filter', function() {
    return new Filter();
});
 
//把传递服务的容器作为唯一参数传递给组件
$some = new SomeComponent($di);
$some->someRequest();


关键字php