Symfony欧宝娱乐app下载地址 3.4新增功能:订阅微内核中的事件
2017年9月20日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。欧宝娱乐app下载地址有些信息可能已经过时了。阅读最新的Symfony文档欧宝娱乐app下载地址.
在Sy欧宝娱乐app下载地址mfony 2.8中,我们引入了MicroKernel特性提供了一种不同的、更简单的方式来配置Symfony全栈框架。欧宝娱乐app下载地址欧宝娱乐app下载地址将于2017年11月发布的Symfony 4将在创建新应用程序时默认使用这个特性。
同时,在Symfony 3.欧宝娱乐app下载地址4中,我们改进了微内核允许订阅事件.你只需要实现通常的EventSubscriberInterface
并添加处理不同事件的方法。
考虑一个简单的应用程序,它希望处理在执行过程中发生的异常。在Sy欧宝娱乐app下载地址mfony 3.4中,你可以让微内核监听KernelEvents:异常
事件,并在内核的方法中实现异常处理逻辑:
12 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
/ / src / Kernel.php名称空间应用程序;使用应用程序\异常\DangerException;使用欧宝娱乐app下载地址\包\FrameworkBundle\内核\MicroKernelTrait;使用欧宝娱乐app下载地址\组件\EventDispatcher\EventSubscriberInterface;使用欧宝娱乐app下载地址\组件\HttpKernel\事件\GetResponseForExceptionEvent;使用欧宝娱乐app下载地址\组件\HttpKernel\内核作为BaseKernel;使用欧宝娱乐app下载地址\组件\HttpKernel\KernelEvents;类内核扩展BaseKernel实现了EventSubscriberInterface{使用MicroKernelTrait;/ /……公共静态函数getSubscribedEvents(){返回[KernelEvents::异常= >“handleExceptions”];}公共函数handleExceptions(GetResponseForExceptionEvent$事件){如果($事件->getException ()运算符DangerException) {$事件->setResponse(响应::创建(“一个人去很危险。取这个'));}/ /……}}
发表在#生活在边缘
评论
@Alex Rock Ancelet:比如http://stackphp.com/middlewares/ ?:)
我赞成!其实我想要这个已经很久了……这是我在MicroKernelTrait中没有完成的事情之一:)。顺便说一句,MicroKernelTrait被自动用于Symfony 4 Flex项目…欧宝娱乐app下载地址所以*所有*你需要做的是添加EventSubscriberInterface:)。
Alex Rock is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now