如何自定义方法行为不使用继承
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何自定义方法行为不使用继承
在方法调用之前或之后执行某些操作
如果你想在方法调用之前或之后做一些事情,你可以在方法的开始或结束分别分派一个事件:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
类喷火{/ /……公共函数发送($喷火,$酒吧){//在方法之前执行一些操作$事件=新FilterBeforeSendEvent ($喷火,$酒吧);$这->调度程序->调度(“foo.pre_send”,$事件);//从事件中获取$foo和$bar,它们可能已经被修改$喷火=$事件->getFoo ();$酒吧=$事件->getBar ();//真正的方法实现在这里$受潮湿腐烂=……;//在方法之后执行一些操作$事件=新FilterSendReturnValue ($受潮湿腐烂);$这->调度程序->调度(“foo.post_send”,$事件);返回$事件->getReturnValue ();}}
在这个例子中,有两个事件被抛出:foo.pre_send
,方法执行前,和foo.post_send
在方法执行之后。每个事件都使用自定义Event类向两个事件的侦听器传递信息。这些事件类需要由您创建,并且在本例中允许使用变量$ foo
,美元的酒吧
而且美元受潮湿腐烂
由侦听器检索和设置。
例如,假设FilterSendReturnValue
有一个setReturnValue
方法,一个侦听器可能看起来像这样:
1 2 3 4 5 6 7
公共函数onFooPostSend(FilterSendReturnValue$事件){$受潮湿腐烂=$事件->getReturnValue ();//修改原始的“$ret”值$事件->setReturnValue ($受潮湿腐烂);}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。