Laravel事件监听器

在Laravel中,事件监听器(Event Listeners)用于监听特定事件的发生,并在事件发生时执行相应的处理逻辑。下面是使用事件监听器的基本步骤:

  1. 创建事件:首先需要创建一个事件类,在该类中定义了事件所包含的相关信息。你可以使用php artisan make:event命令来创建一个新的事件类,比如:
php artisan make:event OrderShipped

这将在app/Events目录下创建一个名为OrderShipped的事件类。

  1. 创建监听器:然后,你需要创建一个事件监听器,用于处理特定事件发生时的逻辑。通过php artisan make:listener命令可以创建一个新的事件监听器,比如:
php artisan make:listener SendShipmentNotification --event=OrderShipped

这将在app/Listeners目录下创建一个名为SendShipmentNotification的事件监听器类,并指定它要监听的事件为OrderShipped。

  1. 注册监听器:接下来,需要将事件和事件监听器进行关联注册。在app/Providers/EventServiceProvider.php文件的$listen属性中,添加事件和对应的监听器的关联,例如:
protected $listen = [
    'App\Events\OrderShipped' => [
        'App\Listeners\SendShipmentNotification',
    ],
];

  1. 编写监听器逻辑:在创建的事件监听器类中,实现handle方法来处理事件发生时的逻辑。比如:
public function handle(OrderShipped $event)
{
    // 处理订单发货通知的逻辑
}

  1. 触发事件:最后,在适当的地方触发事件,比如在模型的某个动作中触发对应的事件。例如:
event(new OrderShipped($order));

这样,当OrderShipped事件被触发时,与之关联的SendShipmentNotification监听器会被调用,执行相应的处理逻辑。

通过以上步骤,你就可以在Laravel中使用事件监听器来实现解耦合的事件处理逻辑,使得代码更加清晰和可维护。

监听器传参:

  1. 在事件类中定义构造函数并接收参数:
class OrderShipped
{
    public $order;

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

  1. 在事件监听器中的 handle 方法中接收事件参数:
use App\Events\OrderShipped;

class SendShipmentNotification
{
    public function handle(OrderShipped $event)
    {
        $order = $event->order;
        // 处理订单发货通知的逻辑
    }
}

你可能感兴趣的:(php,laravel,php)