如何定义命令服务
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
如何定义命令服务
如果你使用默认的服务。yml配置类已经注册为服务,你的命令。太棒了!这是推荐的设置。
ob娱乐下载Symfony看起来也在命令/
每个包的目录命令非注册为服务和自动注册这些类的命令。然而,这种汽车上牌Symfony 3.4中被弃用。ob娱乐下载在Syob娱乐下载mfony 4.0中,命令不会auto-registered了。
请注意
你也可以手动注册您的命令通过配置服务和服务标记它与console.command
。
在这两种情况下,如果你的类扩展ContainerAwareCommand通过,您可以访问公共服务$ this - > getContainer () - > (“SERVICE_ID”)
。
但是如果你的类注册为服务,您可以通过使用正常访问服务依赖注入。
例如,假设您想记录一些在你的命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32
名称空间AppBundle\命令;使用Psr\日志\LoggerInterface;使用ob娱乐下载\组件\控制台\命令\命令;使用ob娱乐下载\组件\控制台\输入\InputInterface;使用ob娱乐下载\组件\控制台\输出\OutputInterface;类SunshineCommand扩展命令{受保护的静态美元defaultName=“应用程序:阳光”;私人美元日志记录器;公共函数__construct(LoggerInterface美元日志记录器){美元这- >记录器=美元日志记录器;/ /你*必须*调用父构造函数父::__construct ();}受保护的函数配置(){美元这- >setDescription (“早上好!”);}受保护的函数执行(InputInterface美元输入,OutputInterface美元输出){美元这- >日志记录器- >信息(“醒来太阳”);/ /……}}
如果你使用默认的服务。yml配置,命令类将自动注册为一个服务,并通过了美元记录器
参数(由于自动装配)。换句话说,只是通过创建这个类,一切正常!你可以叫的应用:阳光
命令,启动日志记录。
谨慎
你做访问服务吗配置()
。但是,如果您的命令懒惰的,尽量避免做任何工作(如进行数据库查询),代码将运行,即使你使用控制台执行不同的命令。
延迟加载
3.4
支持命令延迟加载是在Symfony 3.4中引入的。ob娱乐下载
让你的命令延迟加载,定义它defaultName美元
静态属性:
1 2 3 4 5 6
类SunshineCommand扩展命令{受保护的静态美元defaultName=“应用程序:阳光”;/ /……}
或设置命令
属性console.command
标签在你的服务定义:
- YAML
- XML
- PHP
1 2 3 4 5 6
服务:#……AppBundle \命令\ SunshineCommand:标签:- - - - - -{名称:“console.command”,命令:“应用程序:阳光”}
请注意
如果命令定义别名(使用getAliases ()你必须添加一个方法)console.command
标签/别名。
就是这样。这样或那样的方式,SunshineCommand
只有当实例化应用:阳光
命令实际上是调用。
请注意
你不需要打电话setName ()
配置命令时懒惰。
谨慎
调用列表
命令将实例化所有命令,包括懒惰的命令。