我正在阅读http://symfony.com/doc/master/components/dependency_injection/introduction.html,结果我比回答问题更让自己困惑。我想在我的项目中使用 DI,这样我就可以进行适当的测试以及 DI 附带的所有其他美妙的事情。
你的代码怎么能不依赖容器,这不就是你访问它的方式吗?
假设您有一个带有 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?除非我错了。