我想在我的Symfony 2应用程序中使用ResultFactory类作为服务:
My Result工厂类将负责创建BaseResult实例。 根据传递给get工厂方法的类型,ResultFactory将创建正确的ResultObject。
这里可能是代码:
class ResultFactory
{
protected $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
public function get($type, $param)
{
$instance = null;
switch ($type) {
case 'Type1':
$instance = new Type1Result($param);
break;
case 'Type2':
$instance = new Type2Result($param);
break;
}
return $instance;
}
}
我的问题是:
我想在ResultObject中使用服务。我如何将此服务注入我的ResultObject?
谢谢!
答案 0 :(得分:1)
您没有在结果对象中使用您的服务。您的工厂正在生成结果对象。 您可以在捆绑包的services.yml中将工厂服务定义为:
result.factory:
class: ResultFactory
arguments: ["@translator"]
在您的控制器中,您可以拨打该服务:
$resultObject = $this->get('result_factory')->get($type, $param);
此外,您还有一个核心示例,如何在[文档]中使用symfony2创建工厂服务。(http://symfony.com/doc/current/components/dependency_injection/factories.html)