[我喜欢自动装配,它绝对是我见过的最优雅的依赖管理解决方案。我也想在实例化新对象时使用它。
请考虑以下服务:
class MyService()
{
public function __construct(Dependency1 $var1, Dependency99 $var99)
{
...
}
}
这是我使用的时间:
class AnotherService
{
public function buildServices(array $arrData)
{
$arrMyServices = [];
foreach($arrData as $data) {
// I want to autowire this!
$arrMyServices[] = (new MyService($var1, $var99))
->loadData($data);
}
return $arrMyServices;
}
}
问题是关于// I want to autowire this!
下面的行。 我不想在那里手动传递依赖项,但是创建一个新的自动连线服务。理想情况下,我会呼叫$symfony->createMyService()
并自动重新获得服务的新实例。
ATM我确实创建了一个像createMyService()
这样的工厂方法,但是这很浪费时间。有没有一种“ Symfony”的方式来做到这一点?
我认为这里的设计不好。似乎您完全不了解IoC和依赖项注入模式。