Symfony 4 - 将构造函数索引注入自动装配的第三方服务

时间:2018-03-24 11:52:50

标签: symfony symfony4

我正在使用Symfony 4,目前正在集成Symfony Serializer组件。通过自动装配,提供的Serializer服务可以通过类型化方法自动注入类中,如此,

// Container injects instance of \Symfony\Component\Serializer\Serializer

public function indexAction(SerializerInterface $serializer)

第三方Serializer类可以在point of construction接受一个规范化器和编码器数组,在默认的注册服务中我认为是空的(见下文)。

是否有办法在创建该服务时触发规范化器和编码器的注入(实际上是更新该服务的配置),或者是否必须在应用程序services.yaml中注册自定义服务引用该第三方类的文件,包含参数?如果是后者,那么如何定义一个Normalizer / Encoder类数组并将其作为参数注入该服务?

修改

原来我错误的是没有编码器/规范化器的默认Serializer服务(否则它不知道怎么做!),下面是它的默认状态;

Default Serializer Encoders, Decoders and Normalizers

1 个答案:

答案 0 :(得分:1)

我相信后者会是你想要的。

实现将这些规范化器/编码器传递给构造函数(因为它们既不是标量也不是服务)的方法是提供自定义服务工厂类,如下所示:

<强> Using a Factory to Create Services

希望这会有所帮助......