使用事件

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.7,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

使用事件

2.3

控制台事件在Symfony 2.3中引入的。欧宝娱乐app下载地址

控制台的应用程序类组件允许您选择钩到一个控制台应用程序的生命周期事件。而不是重新发明轮子,它使用Symfony EventDispatcher组件做这项工作:欧宝娱乐app下载地址

1 2 3 4 5 6 7 8
使用欧宝娱乐app下载地址\组件\控制台\应用程序;使用欧宝娱乐app下载地址\组件\EventDispatcher\EventDispatcher;美元调度程序=EventDispatcher ();美元应用程序=应用程序();美元应用程序- >setDispatcher (美元调度程序);美元应用程序- >run ();

谨慎

控制台事件只是引发的主要命令被执行。命令由主命令调用不会引发任何事件。

ConsoleEvents:命令事件

典型的目的:做事之前运行任何命令(如日志记录命令是执行),或显示的事件被执行。

在执行任何命令,ConsoleEvents:命令事件分派。听众接收ConsoleCommandEvent事件:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用欧宝娱乐app下载地址\组件\控制台\事件\ConsoleCommandEvent;使用欧宝娱乐app下载地址\组件\控制台\ConsoleEvents;美元调度程序- >addListener (ConsoleEvents::命令,函数(ConsoleCommandEvent美元事件){/ /获取输入实例美元输入=美元事件- >getInput ();/ /得到输出实例美元输出=美元事件- >getOutput ();/ /执行命令美元命令=美元事件- >getCommand ();/ /写的命令美元输出- >writeln (sprintf (运行命令前的<信息> % s < /信息> ',美元命令- >getName ()));/ /获取应用程序美元应用程序=美元命令- >getApplication ();});

禁用命令里面的听众

2.6

禁用命令在监听器是在Symfony 2.6中引入的。欧宝娱乐app下载地址

使用disableCommand ()方法,您可以禁用命令在一个侦听器。应用程序将执行命令,而是将返回代码113年(定义在ConsoleCommandEvent: RETURN_CODE_DISABLED)。这段代码是其中一个保留退出代码控制台命令,符合C / c++标准。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用欧宝娱乐app下载地址\组件\控制台\事件\ConsoleCommandEvent;使用欧宝娱乐app下载地址\组件\控制台\ConsoleEvents;美元调度程序- >addListener (ConsoleEvents::命令,函数(ConsoleCommandEvent美元事件){/ /执行命令美元命令=美元事件- >getCommand ();/ /……检查是否可以执行的命令/ /禁用命令,这将导致该命令被跳过/ /返回从应用程序和代码113美元事件- >disableCommand ();/ /可以使命令在后面的听众如果(!美元事件- >commandShouldRun ()) {美元事件- >enableCommand ();}});

ConsoleEvents:异常事件

典型的目的:处理异常扔在一个命令的执行。

一个命令时抛出异常的ConsoleEvents:异常事件分派。一个侦听器可以包装或更改前的异常或做任何有用的应用程序异常。

听众接收ConsoleExceptionEvent事件:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用欧宝娱乐app下载地址\组件\控制台\事件\ConsoleExceptionEvent;使用欧宝娱乐app下载地址\组件\控制台\ConsoleEvents;美元调度程序- >addListener (ConsoleEvents::异常,函数(ConsoleExceptionEvent美元事件){美元输出=美元事件- >getOutput ();美元命令=美元事件- >getCommand ();美元输出- >writeln (sprintf (“哎呀,异常在运行命令<信息> % s < /信息> ',美元命令- >getName ()));/ /获取当前退出代码(异常代码或ConsoleEvents:设定的退出代码:终止事件)美元exitCode=美元事件- >getExitCode ();/ /改变了另一个例外美元事件- >setException (\ LogicException (捕获异常的,美元exitCode,美元事件- >getException ()));});

ConsoleEvents:终止事件

典型的目的:执行一些命令后执行清理操作。

已经执行的命令后,ConsoleEvents:终止事件分派。它可以用来做任何操作需要执行的所有命令或清理你发起的ConsoleEvents:命令侦听器(如发送日志,关闭数据库连接,发送邮件,…)。一个侦听器也可能改变退出代码。

听众接收ConsoleTerminateEvent事件:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用欧宝娱乐app下载地址\组件\控制台\事件\ConsoleTerminateEvent;使用欧宝娱乐app下载地址\组件\控制台\ConsoleEvents;美元调度程序- >addListener (ConsoleEvents::终止,函数(ConsoleTerminateEvent美元事件){/ /得到输出美元输出=美元事件- >getOutput ();/ /获取被执行的命令美元命令=美元事件- >getCommand ();/ /显示给定的内容美元输出- >writeln (sprintf (后运行命令<信息> % s < /信息> ',美元命令- >getName ()));/ /改变了退出代码美元事件- >setExitCode (128年);});

提示

这个事件也派出当异常抛出的命令。然后派遣后ConsoleEvents:异常事件。收到的退出代码在本例中是异常代码。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。