在Symfony 3.3中,DI的新最佳实践是使用普通的构造函数依赖注入(或者在控制器中使用"action"注入)来代替通过 $this->get() 获取公共服务(虽然这种方式仍然可以工作)。因此,在类控制器中,我们可以通过类型提示而无需指定服务。正如官方文档所示。
现在我遇到了循环引用错误:
[Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException] 服务“AppBundle\Service\MyClass”出现循环引用,路径为:“AppBundle\Service\MyClass -> AppBundle\Service\MyClass”。
那么,在这种情况下最佳实践是什么?
谢谢。
class InvoiceMailer
{
private $generator;
public function __construct(InvoiceGenerator $generator)
{
$this->generator = $generator
}
// ...
}
这似乎很有效,但如果我继承一个类并在我的构造函数中添加更多参数怎么办?
use Symfony\Component\HttpKernel\Exception\HttpException;
class MyClass extends HttpException
{
private $generator;
public function __construct(InvoiceGenerator $generator, \Exception $previous = null, array $headers = [], $code = 0)
{
$this->generator = $generator;
$statusCode = $generator->getStatusCode();
$message = $generator->getTitle();
parent::__construct($statusCode, $message, $previous, $headers, $code);
}
// ...
}
现在我遇到了循环引用错误:
[Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException] 服务“AppBundle\Service\MyClass”出现循环引用,路径为:“AppBundle\Service\MyClass -> AppBundle\Service\MyClass”。
那么,在这种情况下最佳实践是什么?
谢谢。