Laravel 事件处理
laravel 事件处理
事件提供了一个简单的观察者实现,它允许用户订阅和监听web应用程序中触发的各种事件。laravel中的所有事件类都存储在 app / events 文件夹中,而侦听器存储在 app / listeners 文件夹中。
下面显示了在您的web应用程序中生成事件和侦听器的工匠命令 -
php artisan event:generate
如上所述,该命令将生成事件和侦听器到相应的文件夹。
事件和监听器为分离web应用程序提供了一种很好的方式,因为一个事件可以有多个相互独立的监听器。由artisan命令创建的events文件夹包括以下两个文件:event.php和someevent.php。他们在这里显示
event.php
namespace app\events; abstract class event{ // }</pre-->如上所述, <strong>event.php</strong> 包含类 <strong>event</strong> 的基本定义,并调用名称空间 <strong>app \ events</strong> 。请注意,用户定义或自定义事件是在此文件中创建的。
<h3>someevent.php</h3>namespace app\events; use app\events\event; use illuminate\queue\serializesmodels; use illuminate\contracts\broadcasting\shouldbroadcast; class someevent extends event{ use serializesmodels; /** * create a new event instance. * * @return void */ public function __construct(){ // } /** * get the channels the event should be broadcast on. * * @return array */ public function broadcaston(){ return []; } }</pre-->请注意,此文件使用序列化来在web应用程序中广播事件,并且此文件中还初始化了必要的参数。
例如,如果我们需要在构造函数中初始化顺序变量以注册一个事件,我们可以通过以下方式来完成 -
public function __construct(order $order){ $this->order = $order; }<h3>听众</h3>听众处理正在注册的事件中提到的所有活动。工匠命令 <strong>事件:生成</strong> 创建所有 <strong>听众</strong> 的 <strong>应用程序/听众</strong> 目录。listeners文件夹包含一个文件 <strong>eventlistener.php</strong> ,它具有处理侦听器所需的所有方法。
<h3>eventlistener.php</h3>namespace app\listeners; use app\events\someevent; use illuminate\queue\interactswithqueue; use illuminate\contracts\queue\shouldqueue; class eventlistener{ /** * create the event listener. * * @return void */ public function __construct(){ // } /** * handle the event. * * @param someevent $event * @return void */ public function handle(someevent $event){ // } }</pre-->如代码所述,它包含用于管理各种事件的 <strong>句柄</strong> 函数。我们可以创建针对单个事件的各种独立侦听器。
<h3><a href="/s7900103/laravel facades.html">下一节:laravel facades</a></h3> <h3><a href="/php/php_sz/180.html" target="_blank">laravel 教程</a></h3>