我从来没有做过任何事件驱动的PHP,只有Node.js,所以我想了解事件调度系统如何在PHP中工作(如Laravel events,CakePHP events和Symfony event dispatcher)。了解PHP事件调度系统
这个例子是在Laravel文档:
protected $listen = [
'App\Events\OrderShipped' => [
'App\Listeners\SendShipmentNotification',
],
];
由于在Apache上运行PHP脚本的生命周期基本上是请求的生命周期,这是不是意味着所有的听众都实例化每个请求的事件?
因此,如果我在我的应用程序中有120个听众(即在此$listen
属性中列出),那么每次浏览一个页面时,他们中的120个都将被实例化?或者,只有在调度适当的事件时,侦听器对象才会被实例化?
在整个请求的持续时间内,甚至可能没有单个事件触发,听众对每个请求实例化的效率似乎相当低下。
这是我应该关注的东西吗?
为个别事件的开销是相当低的,当事件被激活,它会寻找合适的听众,然后实例化它们。 – Augwa
事件监听器似乎有点高企业级的CRM或ERP之外,但我认为调度器本身正在控制基于事件密钥的监听器处理器的实例化。所以真的是一个数组来保存你的关联,当第一级条件满足时,第二级关联被实例化(由调度员)。 –