Pour un aperçu de programmation des événements, voir event_handler et event_loop. Événements dans les files d'attente, par opposition aux piles. Cela signifie simplement que, par défaut, de nouveaux événements seront traitées après les événements after existants.
Ils se composent d'un nom unique et un callback. Par défaut, il y a plusieurs événements définis. Les noms sont entièrement libre, mais la convention est d'utiliser un prefix.name pour rendre les noms événement plus unique. Tous les événements pré-définis sont préfixés comme system.name , par exemple: system.post_controller .
Tous les évènements sont static, et ne pourront jamais être instanciés.
Permet d'ajouter un nouveau rappel à un événement. Si l'événement n'existe pas déjà, il sera créé.
// Calls the function "foo" after the controller method is executed Event::add('system.post_controller', 'foo'); // Calls the static method "Foo::bar" after the controller method is executed Event::add('system.post_controller', array('foo', 'bar')); // Calls the "bar" method in the "$foo" object when the output is rendered Event::add('system.display', array($foo, 'bar'));
Vous pouvez également créer des événements tout à fait nouveau de cette façon:
// Creates a custom user.login event Event::add('user.login', array($user, 'login'));
Permet d'ajouter une fonction de rappel juste avant un autre rappel à un événement.
// Add the function "faa" to be executed before "foo" Event::add_before('system.post_controller', 'foo', 'faa');
Si l'événement que vous insérez avant n'existe pas, add_before fonctionnera exactement de la même manière que add.
Permet d'ajouter une fonction de rappel immédiatement après un autre rappel à un événement.
// Add the function "fzz" to be after "foo" Event::add_after('system.post_controller', 'foo', 'fzz');
Si l'événement que vous insérez après n'existe pas, add_after fonctionnera exactement de la même add.
Utilisé pour remplacer un rappel avec un autre rappel.
// Replace the "foo" function with the "oof" function Event::replace('system.post_controller', 'foo', 'oof');
Si l'événement que vous remplacez n'existe pas, aucun événement ne sera ajouté.
Retourne des callbacks comme un simple tableau.
// Returns of the callbacks for system.post_controller $events = Event::get('system.post_controller'); // Loop through each event and call it foreach ($events as $event) { $return_value = call_user_func($event); }
Si aucun événement existe, un tableau vide sera retournée. Il est recommandé d'utiliser empty si vous avez besoin de valider que les événements existent.
Effacer un ou tous les rappels d'un événement.
// Clears the "oof" function from system.post_controller Event::clear('system.post_controller', 'oof');
Si cette méthode est appelée sans second argument, il sera mis en file d'attente.
Exécuter toutes les rappels attachés à un événement.
// Run the system.post_controller event Event::run('system.post_controller');
Vérifie si un événement a déjà été exécuté. Pour éviter les doublons.
// Test if the event has already run if (Event::has_run('system.post_controller')) { echo 'post_controller has been run.'; } // Run the post controller event if it has not already been run Event::has_run('system.post_controller') or Event::run('system.post_controller');
Event::$data est une variable spéciale qui peut être réglé lors de l'utilisation de Event::run. Les données sont assignés par référence, et peuvent être manipulés par tous les rappels.
$data = Event::$data; // Debug the data echo Kohana::debug($data); // Run the post_controller event with data Event::run('system.post_controller', $data); // Display the changed data echo Kohana::debug($data);
Les données d'événement sont effacées immédiatement après tous les rappels, et ne peut être consulté lors de l'exécution de rappel.