Maison >développement back-end >tutoriel php >Définition et implémentation du mécanisme événementiel en PHP

Définition et implémentation du mécanisme événementiel en PHP

墨辰丷
墨辰丷original
2018-06-08 17:28:331390parcourir

Cet article présente principalement la définition et la mise en œuvre du mécanisme d'événements PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

L'exemple de cet article décrit la méthode d'implémentation du mécanisme d'événements en PHP, comme suit :

<?php
/**
* 事件
*/
class Event {
 private $callbacks = array();
 private $holder;
 function __construct() {
  $bt = debug_backtrace();
  if (count($bt) < 2) {
   $this->holder = null;
   return;
  }
  $this->holder = &$bt[1][&#39;object&#39;];
 }
 function attach() {
  $args = func_get_args();
  switch (count($args)) {
   case 1:
    if (is_callable($args[0])) {
     $this->callbacks[]= $args[0];
     return;
    }
    break;
   case 2:
    if (is_object($args[0]) && is_string($args[1])) {
     $this->callbacks[]= array(&$args[0], $args[1]);
    }
    return;
   default:
    return;
  }
 }
 function notify() {
  $bt = debug_backtrace();
  if ($this->holder && 
    ((count($bt) >= 2 && $bt[count($bt) - 1][&#39;object&#39;] !== $this->holder)
    || (count($bt) < 2))) {
   throw(new Exception(&#39;Notify can only be called in holder&#39;));
  }
  foreach ($this->callbacks as $callback) {
   $args = func_get_args();
   call_user_func_array($callback, $args);
  }
 }
}

Résumé : Ce qui précède représente l'intégralité du contenu de cet article , j'espère que cela pourra être utile à tout le monde, l'apprentissage aide.

Recommandations associées :

Une fonction de notation est implémentée basée sur jQuery via PHP et mysql

Variables PHP , Application de tableaux, d'expressions régulières et de modèles

Comment obtenir la première lettre du pinyin chinois dans le programme php

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn