Функция event
Функция event применяется для отправки события в диспетчер событий Laravel.
Первым параметром передаётся экземпляр класса события,
втором параметром можно передать массив дополнительных данных.
Функция возвращает массив результатов, полученных от слушателей события.
Синтаксис
<?php
event($event, $payload = []);
?>
Пример
Давайте создадим простое событие и запустим его с помощью функции event:
<?php
namespace App\Events;
use Illuminate\Foundation\Events\Dispatchable;
class UserRegistered
{
use Dispatchable;
public $user;
public function __construct($user)
{
$this->user = $user;
}
}
?>
<?php
namespace App\Http\Controllers;
use App\Events\UserRegistered;
class UserController extends Controller
{
public function store()
{
$user = ['id' => 1, 'name' => 'John'];
event(new UserRegistered($user));
echo "User registered successfully";
}
}
?>
Результат выполнения кода:
"User registered successfully"
Пример
Давайте запустим событие с передачей дополнительных данных в виде массива:
<?php
namespace App\Http\Controllers;
use App\Events\OrderCreated;
class OrderController extends Controller
{
public function create()
{
$order = ['id' => 5, 'total' => 500];
$payload = ['user_id' => 10, 'payment_method' => 'card'];
event(new OrderCreated($order), $payload);
echo "Order created successfully";
}
}
?>
Результат выполнения кода:
"Order created successfully"
Пример
Давайте получим результаты от слушателей события. Функция event возвращает массив данных:
<?php
namespace App\Http\Controllers;
use App\Events\ProductViewed;
class ProductController extends Controller
{
public function show($id)
{
$event = new ProductViewed($id);
$results = event($event);
foreach ($results as $result) {
echo $result;
}
}
}
?>
Результат выполнения кода:
["Event processed", "Logging completed", "Statistics updated"]
Смотрите также
-
класс
Event,
который предоставляет методы для работы с событиями -
класс
Event::dispatch,
который запускает событие и возвращает результат -
класс
Event::listen,
который регистрирует слушателя для события -
класс
Event::subscribe,
который позволяет подписать класс на несколько событий