Laravel – Event Handling (Sự Kiện)

0
42

Event cung cấp một triển khai người quan sát đơn giản cho phép người dùng đăng ký và lắng nghe các sự kiện khác nhau được kích hoạt trong ứng dụng web. Tất cả các lớp sự kiện trong Laravel được lưu trữ trong thư mục app/Events và trình nghe được lưu trữ trong thư mục  app/Listeners.

Lệnh thủ công để tạo sự kiện và người nghe trong ứng dụng web của bạn được hiển thị bên dưới:

php artisan event:generate

Events and Listeners là một cách tuyệt vời để tách ứng dụng web, vì một sự kiện có thể có nhiều trình nghe độc lập với nhau. Thư mục sự kiện được tạo bởi lệnh thủ công bao gồm hai tệp sau: event.php SomeEvent.php. Chúng được hiển thị ở đây –

Event.php

<?php
namespace App\Events;
abstract class Event{
   //
}

Như đã đề cập ở trên, event.php bao gồm định nghĩa cơ bản của lớp Event và các lệnh gọi cho vùng tên App \ Events. Xin lưu ý rằng sự kiện do người dùng xác định hoặc tùy chỉnh được tạo trong tệp này.

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 [];
   }
}

Quan sát rằng tệp này sử dụng tuần tự hóa để phát các sự kiện trong ứng dụng web và các tham số cần thiết cũng được khởi tạo trong tệp này.

Ví dụ: nếu chúng ta cần khởi tạo biến thứ tự trong hàm tạo để đăng ký một sự kiện, chúng ta có thể thực hiện theo cách sau:

public function __construct(Order $order) {
   $this->order = $order;
}

Listeners

Listeners xử lý tất cả các hoạt động được đề cập trong một sự kiện đang được đăng ký. Sự kiện lệnh event:generate ra tất cả các trình nghe trong thư mục app/listeners. Thư mục Người nghe bao gồm tệp EventListener.php có tất cả các phương thức cần thiết để xử lý trình nghe.

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

Như đã đề cập trong code, nó bao gồm chức năng xử lý để quản lý các sự kiện khác nhau. Chúng tôi có thể tạo ra nhiều người nghe độc lập khác nhau nhắm mục tiêu một sự kiện.

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây