我一直听到人们谈论依赖注入及其好处,但我并不真正理解它。
我想知道这是否是“我一直将数据库连接作为参数传递”问题的解决方案。
我尝试阅读维基百科的条目,但该示例是用 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;
}
版本 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();
版本 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();
任何人都有一个很好的资源或只是使方法和好处变得清晰的洞察力吗?