This example shows a simple event UserRegistered and a listener SendWelcomeEmail. When the event is dispatched, the listener runs and prints a message simulating sending an email.
<?php
// Event: UserRegistered.php
namespace App\Events;
use App\Models\User;
class UserRegistered
{
public User $user;
public function __construct(User $user)
{
$this->user = $user;
}
}
// Listener: SendWelcomeEmail.php
namespace App\Listeners;
use App\Events\UserRegistered;
class SendWelcomeEmail
{
public function handle(UserRegistered $event)
{
echo "Sending welcome email to " . $event->user->email . "\n";
}
}
// Simulate usage
// Simple User model stub
class User {
public string $email;
public function __construct(string $email) {
$this->email = $email;
}
}
// Simulate event dispatching
function dispatchEvent(object $event, object $listener) {
$listener->handle($event);
}
// Create user
$newUser = new User("newuser@example.com");
// Create event
$userRegisteredEvent = new UserRegistered($newUser);
// Create listener
$welcomeEmailListener = new SendWelcomeEmail();
// Dispatch event to listener
dispatchEvent($userRegisteredEvent, $welcomeEmailListener);