通用事件对象
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.1,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
通用事件对象
基地事件EventDispatcher组件提供的类是故意稀疏的,以允许通过使用OOP继承创建API特定的事件对象。这允许在复杂的应用程序中编写优雅且可读的代码。
的GenericEvent为方便那些希望在整个应用程序中只使用一个事件对象的人而提供。它适用于直接开箱即用的大多数目的,因为它遵循标准的观察器模式,其中事件对象封装了一个事件“主题”,但添加了可选的额外参数。
GenericEvent除了基类之外,还添加了一些其他方法事件
- __construct ()构造函数接受事件主题和任何参数;
- getSubject ():找到主题;
- setArgument ():通过键设置参数;
- setArguments ():设置参数数组;
- getArgument ():按键获取参数;
- getArguments ():所有参数的Getter;
- hasArgument ():如果参数键存在则返回true;
的GenericEvent
还实现了ArrayAccess在事件参数上,这使得传递关于事件主题的额外参数非常方便。
下面的例子展示了一些用例,以提供灵活性的总体概念。这些示例假设事件侦听器已添加到调度程序。
传递主题:
12 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载\组件\EventDispatcher\GenericEvent;$事件=新GenericEvent ($主题);$调度程序->调度($事件,“foo”);类FooListener{公共函数处理程序(GenericEvent$事件){如果($事件->getSubject ()运算符Foo) {/ /……}}}
属性传递和处理参数ArrayAccessAPI来访问事件参数:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用ob娱乐下载\组件\EventDispatcher\GenericEvent;$事件=新GenericEvent ($主题, (“类型”= >“foo”,“计数器”= >0]);$调度程序->调度($事件,“foo”);类FooListener{公共函数处理程序(GenericEvent$事件){如果(收取($事件[“类型”) & &$事件[“类型”) = = =“foo”) {/ /……做某事}$事件[“计数器”+ +;}}
过滤数据:
12 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载\组件\EventDispatcher\GenericEvent;$事件=新GenericEvent ($主题, (“数据”= >“Foo”]);$调度程序->调度($事件,“foo”);类FooListener{公共函数过滤器(GenericEvent$事件){$事件[“数据”] = strtolower($事件[“数据”]);}}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。