人々が依存性注入とその利点について話しているのをよく耳にしますが、私はそれをよく理解していません。
「データベース接続を常に引数として渡す」問題の解決策であるかどうか疑問に思っています。
ウィキペディアのエントリを読んでみましたが、例は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();
誰もが方法と利点を明確にする優れたリソースまたは単なる洞察を持っていますか?