Hướng dẫn dùng event] trong PHP

Mở đầu

Event là sự kiện là một hành động hay một tác vụ nào đó xảy ra ở một thời điêm xác định.Trong đời thường cũng như trong quá trình hoạt động của một ứng dụng có rất nhiều event xảy ra. Ví dụ như trong ứng dụng web của chúng ta khi người dùng click lên một button là một sự kiện, khi người dùng thêm sản phẩm vào giỏ hàng là một sự kiện..v.v.. Đôi khi chúng ta cần xử lý các sự kiện này, và định nghĩa các tác vụ mà ứng dụng của chúng ta cần phản hồi lại khi một sự kiện xác định xảy ra. Để giúp chúng ta làm được việc này laravel cung cấp cho chúng ta cái gọi là Event. Để biết được cách sử dụng event trong laravel cụ thể ra sao. Mình xin đưa ra một trường hợp thực tế như sau đây..

Gửi mail xác nhận đơn hàng khi có sự kiện khách hàng Order sản phẩm

Đây là một trường hợp thực tế hay gặp nhất là khi chúng ta xây dựng ứng dụng web thương mại điện tử. Khi khách hàng đặt hàng, xem lại thông tin giỏ hàng và quyết định submit đơn hàng. Ứng dụng web của chúng ta sẽ gửi một email về thông tin chi tiết đơn hàng, tổng thanh toán và thông tin thanh toán thêm lần nữa vào email cho khách hàng xác nhận hoặc lưu trữ, đối chiếu thông tin đơn hàng khi cần thiết. Bây giờ mình xin hướng dẫn cách tạo event, lắng nghe event và gửi mail cho trường hợp đã mô trả trên đây.

Đăng ký event và listener

Laravel cung cấp cho chúng ta một cách thuận tiện để bạn có thể đăng ký event và listener cho event của bạn, bằng cách truy cập vào app\Providers\EventServiceProvider trong file này bạn đăng ký event và listener tương ứng như sau :

 protected $listen = [
        'App\Events\CustomerOrder' => [
            'App\Listeners\SendMailConfirmOrder',
        ],
    ];

Trong đó:

  • customerOrder Là tên sự kiện khi người dùng đặt hàng
  • sendMailConfirmOrder là tên listener tương ứng với sự kiện customerOrder. Như bạn cũng có thể đoán được, ta sẽ lắng nghe sự kiện người dùng đặt hàng và khi nó xảy ra. Ta sẽ gửi một email xác nhận đơn hàng tới người dùng

Sinh class event và listener

Sau khi đăng ký như bước trên. Bạn chạy lệnh sau :

php artisan event:generate

Kiểm tra lại, có thể thấy lúc này trong project của chúng ta đã sinh thêm hai folder là EventsListeners trong hai folder này chức hai file tương ứng là customerOrder.phpsendMailConfirmOrder.php

Định nghĩa sự kiện

Trong file customerOrder ta định nghĩa thêm thuộc tính và hàm construct như sau

Chủ Đề