فهرست:

event ها در لاراول

رویدادها در لاراول به کاربر این امکان را می دهند یک رویداد معین در وب اپلیکیشن توسعه داده شده خود را بررسی و رصد کنند. تمام کلاس های event در لاراول در پوشه app/Events و listeners در پوشه app/Listeners ذخیره می شوند. از دستور زیر برای ایجاد event و listeners استفاده می گردد.

php artisan event:generate
یک event می تواند چندین listener داشته باشد که از یکدیگر مستقل باشند. با اجرای خط فرمان بالا در پوشه events دو فایل event.php و SomeEvent.php ایجاد می شوند که بصورت زیر خواهند بود.
Event.php
<?php
namespace App\Events;
abstract class Event{
   //
}
همانطور که در بالا ذکر شد، event.php شامل تعریف اساسی کلاس Event و namespace AppEvents می باشد. لطفا توجه داشته باشید که رویدادهای سفارشی در این پرونده ایجاد شده است.
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 [];
   }
}
به عنوان مثال اگر ما بخواهیم برای یک رویداد، یک متغیر order را در متد سازنده کلاس بالا تعریف کنیم بصورت زیر عمل می کنیم.
public function __construct(Order $order) {
   $this->order = $order;
}

Listeners ها در لاراول

در لاراول listeners ها را در یک event از قبل تعریف شده ایجاد می کنیم. با استفاده از دستور event:generate در خط فرمان لاراول listeners ها نیز در دایرکتوری app/listeners ایجاد می شوند. این دایرکتوری شامل یک فایل به نام EventListener.php می باشد که تمامی متد های مورد نیاز برای مدیریت listeners در آن بصورت زیر تعریف شده است.

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) {
      //
   }
}