服务方法调用和Setter注入

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 4.4,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

服务方法调用和Setter注入

提示

如果您正在使用自动装配,可以使用@ required自动配置方法调用

通常,你会想通过构造函数注入依赖关系。但有时,特别是如果一个依赖项是可选的,您可能想使用setter注入。例如:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ / src /服务/ MessageGenerator.php名称空间应用程序\服务;使用Psr\日志\LoggerInterface;MessageGenerator{私人美元日志记录器;公共函数setLogger(LoggerInterface美元日志记录器):无效{美元- >记录器=美元日志记录器;}/ /……}

配置容器调用setLogger方法,使用调用关键:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/ services.yaml服务:应用程序服务\ \ MessageGenerator:#……电话:- - - - - -setLogger:(“@logger”)

4.3

immutable-setter注射是在Symfony 4.3中引入的。ob娱乐下载

提供不变的服务,一些类实现不变的制定者。这样的setter方法返回一个新实例的配置类而不是突变对象他们呼吁:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/ / src /服务/ MessageGenerator.php名称空间应用程序\服务;使用Psr\日志\LoggerInterface;MessageGenerator{私人美元日志记录器;/ * * *@return静态* /公共函数withLogger(LoggerInterface美元日志记录器):自我{美元=克隆美元;美元- >记录器=美元日志记录器;返回美元;}/ /……}

因为克隆方法返回一个单独的实例、配置这样的服务意味着使用枯萎的方法的返回值($ = $服务- > withLogger($记录器);)。配置告诉容器应该这样做就像:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/ services.yaml服务:应用程序服务\ \ MessageGenerator:#……电话:- - - - - -withLogger:returns_clone !(“@logger”)
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。