Laravel 事件处理
事件提供了一个简单的观察者实现,它允许用户订阅和监听Web应用程序中触发的各种事件。Laravel中的所有事件类都存储在 app / Events 文件夹中,而侦听器存储在 app / Listeners 文件夹中。
下面显示了在您的Web应用程序中生成事件和侦听器的工匠命令 -
php artisan event:generate
如上所述,该命令将生成事件和侦听器到相应的文件夹。
事件和监听器为分离Web应用程序提供了一种很好的方式,因为一个事件可以有多个相互独立的监听器。由artisan命令创建的events文件夹包括以下两个文件:event.php和SomeEvent.php。他们在这里显示
Event.php
<?php namespace App\Events; abstract class Event{ // }
如上所述, event.php 包含类 Event 的基本定义,并调用名称空间 App \ Events 。请注意,用户定义或自定义事件是在此文件中创建的。
SomeEvent.php
<?php 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 []; } }
请注意,此文件使用序列化来在Web应用程序中广播事件,并且此文件中还初始化了必要的参数。
例如,如果我们需要在构造函数中初始化顺序变量以注册一个事件,我们可以通过以下方式来完成 -
public function __construct(Order $order){ $this->order = $order; }
听众
听众处理正在注册的事件中提到的所有活动。工匠命令 事件:生成 创建所有 听众 的 应用程序/听众 目录。Listeners文件夹包含一个文件 EventListener.php ,它具有处理侦听器所需的所有方法。
EventListener.php
<?php 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){ // } }
如代码所述,它包含用于管理各种事件的 句柄 函数。我们可以创建针对单个事件的各种独立侦听器。
Facades为应用程序服务容器中可用的类提供 静态 接口。Laravel 外墙 作为 静态代理 在服务容器底层类,提供了一个简洁,传神语法的利益,同时保持比传统的静态方法更可测试性和灵活性。 如何 ...