我正在使用Symfony 4,目前正在集成Symfony Serializer组件 . 通过自动装配,提供的Serializer服务可以通过类型化方法自动注入类中,如此,
// Container injects instance of \Symfony\Component\Serializer\Serializer
public function indexAction(SerializerInterface $serializer)
第三方 Serializer
类可以在point of construction接受一个Normalizer和Encoders数组,在默认的注册服务中我相信是空的(见下文) .
有没有办法在创建该服务时触发规范化器和编码器的注入(实际上是更新该服务的配置),或者是否必须在应用程序的 services.yaml
文件中注册自定义服务,该文件引用该第三方类,包含参数呢?如果是后者,那么如何定义一个Normalizer / Encoder类数组并将其作为参数注入到该服务中?
Edit
原来我错误的是没有编码器/规范化器的默认Serializer服务(否则它不知道如何做任何事情就没用了!),下面是它的默认状态;
1 回答
我相信后者会是你想要的 .
实现将这些规范化器/编码器传递给构造函数(因为它们既不是标量也不是服务)的方法是提供自定义服务工厂类,如下所示:
Using a Factory to Create Services
希望这可以帮助...