我从来没有在 PHP 中做过任何事件驱动的事情,只有 Node.js,所以我试图了解事件调度系统在 PHP 中是如何工作的(例如Laravel 事件、CakePHP 事件和Symfony 事件调度器)。
这个例子在 Laravel 文档中:
protected $listen = [
'App\Events\OrderShipped' => [
'App\Listeners\SendShipmentNotification',
],
];
由于在 Apache 上运行的 PHP 脚本的生命周期基本上就是请求的生命周期,这是否意味着每个请求都会实例化所有事件侦听器?
因此,如果我的应用程序中有 120 个侦听器(即在此$listen
属性中列出),是否每次访问页面时都会实例化所有 120 个侦听器?还是仅在调度适当的事件时才实例化侦听器对象?
当在请求的整个持续时间内甚至可能没有触发单个事件时,用每个请求实例化侦听器似乎效率很低。
这是我什至应该关心的事情吗?