服务方法调用和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许可证。