私はhttp://symfony.com/doc/master/components/dependency_injection/introduction.htmlを読んでいましたが、質問に答えるよりも混乱してしまいました。プロジェクトで DI を使用して、適切なテストや、DI に付随するその他すべてのすばらしい機能を実行できるようにしたいと考えています。
しかし、私はこれを読んでいて、 http://symfony.com/doc/master/components/dependency_injection/introduction.html#avoiding-your-code-becoming-dependent-on-the-containerまですべて意味がありました
コードがコンテナーに依存しないようにするにはどうすればよいでしょうか? それがコンテナーにアクセスする方法ではありませんか?
foo を持つクラスと bar を持つクラスがあるとします
class Bar {
public function bar() { return 'hello world'; }
}
class Foo {
public function __construct(\Bar $bar) { $this->bar = $bar; };
public function foo() { return $this->bar->bar(); }
}
したがって、Bar の依存関係を Foo に追加します。
use Symfony\Component\DependencyInjection\ContainerBuilder;
$container = new ContainerBuilder();
$container->register('foo', 'Foo')->addArgument(new Reference('Bar'));
次に、Foo (print hello world) を使用したい場合は、次のようにします。
class Test {
public function printHello($foo) {
$foo->foo();
}
}
$test = new Test();
$test->printHello($container->get('foo'));
またはそのようなもの。しかし、そのドキュメントは $container->get? を使用しないように言っているようです。私が間違っていない限り。