服务方法调用和Setter注入
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.2,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
服务方法调用和Setter注入
通常,你会想通过构造函数注入依赖关系。但有时,特别是如果一个依赖项是可选的,您可能想使用setter注入。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
名称空间AppBundle\服务;使用Psr\日志\LoggerInterface;类MessageGenerator{私人美元日志记录器;公共函数setLogger(LoggerInterface美元日志记录器){美元这- >记录器=美元日志记录器;}/ /……}
配置容器调用setLogger
方法,使用调用
关键:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8
# app / config / services.yml服务:app.message_generator:#……电话:- - - - - -方法:setLogger参数:- - - - - -“@logger”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
< !- - - - - -- - - - - -app/config/services.xml -->< /span>< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><容器xmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services //www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><服务><服务id=“app.message_generator”类=“AppBundle \服务\ MessageGenerator”>< !- - - - - -- - - - - -。。。- - ><调用方法=“setLogger”><论点类型=“服务”id=“日志”/ >< /调用>< /服务>< /服务>< /容器>
1 2 3 4 5 6
/ / app / config / services.php使用AppBundle\服务\MessageGenerator;使用欧宝娱乐app下载地址\组件\DependencyInjection\参考;美元容器- >注册(“app.message_generator”,“AppBundle \ \ MessageGenerator服务”)- >addMethodCall (“setLogger”,数组(新引用(“日志”)));
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。