Événements
Les événements peuvent « injecter » du code personnalisé à un point d'exécution spécifique dans code existant. Attachez un code personnalisé à un événement et le code sera automatiquement exécuté lorsque l'événement est déclenché. (Apprentissage recommandé : tutoriel yii)
Par exemple, l'événement messageSent peut être déclenché lorsque l'objet du programme de messagerie envoie avec succès un message. Si vous souhaitez suivre les messages envoyés avec succès, vous pouvez joindre le code de suivi correspondant à l'événement messageSent.
Yii introduit une classe de base appelée yiibaseComponent pour prendre en charge les événements. Si une classe doit déclencher des événements, elle doit hériter de yiibaseComponent ou de ses sous-classes.
Gestionnaires d'événements
Un gestionnaire d'événements est une fonction de rappel PHP qui est exécutée lorsque l'événement auquel il est attaché est déclenché. Vous pouvez utiliser l'une des fonctions de rappel suivantes :
Fonction globale PHP spécifiée sous forme de chaîne, telle que 'trim' ;
Méthode d'objet spécifiée sous forme de tableau du nom de l'objet et du nom de la méthode, telle que comme [$object, $method] ;
Méthode de classe statique spécifiée sous forme de tableau de nom de classe et de nom de méthode, telle que [$class, $method] ; fonction ($événement) { ... }.
Le format du gestionnaire d'événements est :function ($event) {
// $event 是 yii\base\Event 或其子类的对象
}
nom de l'événement : nom de l'événement
expéditeur de l'événement : l'objet qui appelle la méthode trigger()
données personnalisées : les données transmises lors de l'attachement du gestionnaire d'événements, la valeur par défaut est vide, après Les détails de l'article
Attacher des gestionnaires d'événementsAppelez la méthode yiibaseComponent::on() pour attacher le gestionnaire à l'événement. Tel que :
$foo = new Foo; // 处理器是全局函数 $foo->on(Foo::EVENT_HELLO, 'function_name'); // 处理器是对象方法 $foo->on(Foo::EVENT_HELLO, [$object, 'methodName']); // 处理器是静态类方法 $foo->on(Foo::EVENT_HELLO, ['app\components\Bar', 'methodName']); // 处理器是匿名函数 $foo->on(Foo::EVENT_HELLO, function ($event) { //事件处理逻辑 });
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!