Symfony工厂类

时间:2014-05-19 17:42:32

标签: symfony factory

我想在我的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?

谢谢!

1 个答案:

答案 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