私は symfony が依存性注入をどのように行うかを調べてきました。しかし、私はその直接的な目的を理解していません。
すべてをサービスと呼んでいるようです。サービスは、構成されたルーターに沿ったものです。これらのサービスのほとんどには、開始に必要な一連の変数のベースラインがあります。しかし、「isShared」と呼ばれるメソッドがあります。
そのメソッドを使用すると、既に作成されたオブジェクトではなく、新しいオブジェクトが作成されると思います。
しかし、作成するオブジェクトがまったく別の変数を必要とする場合はどうなるでしょうか?
class foobarClass
{
public function __construct($config.foo)
{
//
}
}
$container = new sfContainerBuilder(array('config.foo' => 'bar'));
$container->register('foobar','foobarClass')
->addArgument('%config.foo%')
->isShared(false);
config.foo は bar ではなく foo であるべきですか? 基本的にすべての可能な構成に対して別の定義を作成する必要がありますか (奇妙で、DIC の目的を無効にしているようです)。
また、依存性注入と逆制御の主な違いは何ですか? いつ、どこで、何を、何に使うのか?
前もって感謝します!
編集:
パラメータの問題に関する別の例:
class Files
{
protected $_path;
public function __construct($path)
{
$this->_path = $path;
}
}
$container = new sfContainerBuilder(array('path.to.something' => '/some/path/file.abc'));
$container->register('files','files')
->addArgument('path.to.something')
->isShared(false);
必要に応じて新しいパスを指定するにはどうすればよいですか? 定義にはすでに path.to.something があります。しかし、path.sto.somethingElse を持つオブジェクトが必要な場合はどうすればよいでしょうか?