Classe évènement

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.

Qu'est-ce qu'un événement?

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 .

Méthodes

Tous les évènements sont static, et ne pourront jamais être instanciés.

add

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'));

add_before

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.

add_after

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.

Remplacer

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é.

Get

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

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

Exécuter toutes les rappels attachés à un événement.

// Run the system.post_controller event
Event::run('system.post_controller');

has_run

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');

Data

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.

core/event.txt · Dernière modification: 21/02/2011 22:26 par koyott
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0