首页 文章

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

提问于
浏览
2

我正在使用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服务(否则它不知道如何做任何事情就没用了!),下面是它的默认状态;

Default Serializer Encoders, Decoders and Normalizers

1 回答

  • 1

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

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

    Using a Factory to Create Services

    希望这可以帮助...

相关问题