Hook into app events with Events::on() and trigger custom events with Events::trigger().
Events in CI4
// app/Config/Events.php
use CodeIgniterEventsEvents;
Events::on("post_created", function(array $post) {
// Send notification email
$email = service("email");
$email->setTo("admin@example.com");
$email->setSubject("New post: " . $post["title"]);
$email->send();
});
Events::on("user_login", function(object $user) {
log_message("info", "User " . $user->email . " logged in");
model(UserModel::class)->update($user->id, ["last_login" => date("Y-m-d H:i:s")]);
});
// Fire event in your code
Events::trigger("post_created", $post->toArray());
Events::trigger("user_login", $user);
// Check if event has listeners
Events::hasListeners("post_created");
// Priority (lower number = higher priority)
Events::on("post_created", $handler, EVENT_PRIORITY_HIGH);