相关疑难解决方法(0)

如何在简单的PHP函数中使用"依赖注入",我应该打扰吗?

我听到人们一直在谈论依赖注入和它的好处,但我真的不明白它.

我想知道它是否是"我一直将数据库连接作为参数传递"问题的解决方案.

我试过阅读维基百科上的条目,但这个例子是用Java编写的,所以我不能完全理解它试图弄清楚它的区别.(http://en.wikipedia.org/wiki/Dependency_injection).

我读了这篇依赖注入的php文章(http://www.potstuck.com/2009/01/08/php-dependency-injection/),似乎目标是不将依赖项传递给对象直接,但封锁对象的创建以及它的依赖关系的创建.不过,我不知道如何在使用php函数上下文中应用它.

另外,是以下的依赖注入,我是否应该尝试在功能上下文中进行依赖注入?

版本1 :(我创建的代码类型,但每天都不喜欢)

function get_data_from_database($database_connection){
    $data = $database_connection->query('blah');
    return $data;
}
Run Code Online (Sandbox Code Playgroud)

版本2 :(不必传递数据库连接,但可能不是依赖注入?)

function get_database_connection(){
    static $db_connection;
    if($db_connection){
        return $db_connection;
    } else {
        // create db_connection
      ...
    }
}

function get_data_from_database(){
   $conn = get_database_connection();
   $data = $conn->query('blah');
   return $data;
}

$data = get_data_from_database();
Run Code Online (Sandbox Code Playgroud)

版本3 :("对象"/数据的创建是独立的,数据库代码仍然是,所以这可能算作依赖注入?)

function factory_of_data_set(){
    static $db_connection;
    $data_set = null;
    $db_connection = get_database_connection();
    $data_set = $db_connection->query('blah');
    return $data_set;
}

$data = factory_of_data_set();
Run Code Online (Sandbox Code Playgroud)

任何人都有良好的资源或只是洞察力,使方法和利益 - 水晶 - 清楚?

php dependency-injection parameter-passing

67
推荐指数
3
解决办法
3万
查看次数

什么时候依赖注入容器会变得太大,我该怎么办呢?

我们都知道为什么依赖注入很棒,因为它使代码更少耦合,更容易测试,并且更好阅读!然后有些人决定使用像疙瘩这样的依赖注入容器来帮助PHP 在SOLID中协助依赖倒置原则.

因此,当使用pimple创建DiC,将其传递给控制器​​,并在闭包中创建所有新对象时,实际上只有在开发人员调用时才会实例化$container['object'],这太棒了!

但是当你的应用程序中有一组非常大的类时会发生什么?说1000+,你想在容器中提供这些吗?

在开发方面,这将是一个噩梦,将这些全部放在一个文件中.将它们分开的最佳方法是什么,或者另一种建议是否更可取?

在分离方面,如何:

  • 创建容器
  • 根据应用程序将包含类的几个文件组合在一起
  • 逐步添加到容器,直到文件末尾包括

另一方面,我知道Symfony2使用XML/YAML进行DiC配置,但实际上当应用程序包含这么多类时,这并不是很多关于架构方面的讨论.

开发人员拥有如此庞大的代码库时可以做些什么?

php oop dependency-injection

11
推荐指数
3
解决办法
1820
查看次数