Accueil > > > PHP EVENTS MANAGER
PHP EVENTS MANAGER
Information sur la source
Description
Cette application distribuée sous licence LGPL permet la programmation évènementielle en PHP5. Elle permet aussi de simplifier l'installation d'un système de plugins dans vos applications. Explication rapide : 1. Créer un évènement. 2. Créer des hooks. Ce sont des fonctions qui seront appelées lors du déclenchement des évènements. 3. Déclencher l'évènement. Il suffit de lire le code source pour comprendre le fonctionnement très simple de l'application.
Source
- <?php
-
- /*
- ** PHP Events Manager
- ** Version 1.2.1 (26/08/2007)
- ** Auteur : Psykocrash (SERRAJ Younes)
- **
- ** PHP Events Manager. Programmation évènementielle en PHP5.
- ** Copyright (C) 2007 SERRAJ Younes - Tous droits réservés.
- **
- ** Licence : http://www.gnu.org/licenses/lgpl.txt
- **
- ** Cette bibliothèque est un logiciel libre ; vous pouvez la redistribuer ou
- ** la modifier suivant les termes de la Licence Générale Publique Limitée
- ** GNU telle que publiée par la Free Software Foundation dans la version 2.1
- ** de la License.
- **
- ** Cette bibliothèque est distribuée dans l’espoir qu’elle sera utile, mais
- ** SANS AUCUNE GARANTIE : sans même la garantie implicite de
- ** COMMERCIABILISABILITÉ ou d’ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez
- ** la Licence Générale Publique Limitée pour plus de détails.
- ** ** Vous devriez avoir reçu une copie de la Licence Générale Publique Limitée
- ** avec cette bibliothèque ; si ce n’est pas le cas, écrivez à la :
- ** Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- ** MA 02111-1307, USA.
- */
-
- if (!defined('PEM_PHP5_'))
- {
- define('PEM_PHP5_', true);
-
- class PEM
- {
- protected static $events_list = array();
- public static $safe_mode = false;
-
- /*
- ** Cette fonction cré un évènement
- ** sur lequel pourront être placés
- ** des hooks.
- */
- public static function create_event($event_name)
- {
- $event_exists = self::event_exists($event_name);
- if (self::$safe_mode === true && $event_exists === true)
- throw new Exception("[Safe Mode] L'évènement ''" . htmlspecialchars($event_name) . "'' existe déjà.");
- if (!$event_exists)
- self::$events_list[$event_name] = array();
- }
-
- /*
- ** Cette fonction vérifie si un
- ** d'évènement existe.
- **
- ** Return: true/false.
- */
- public static function event_exists($event_name)
- {
- if (!is_array(self::$events_list)) return false;
- if (array_key_exists($event_name, self::$events_list) === true)
- return true;
- else
- return false;
- }
-
- /*
- ** Cette fonction déclanche un évènement.
- */
- public static function raise_event($event_name, $params = '')
- {
- if (!self::event_exists($event_name))
- throw new Exception("L'évènement ''" . htmlspecialchars($event_name) . "'' n'existe pas.");
- foreach (self::$events_list[$event_name] as $function_name_to_call)
- {
- if (!function_exists($function_name_to_call))
- throw new Exception("La fonction ''" . htmlspecialchars($function_name_to_call) . "'' n'existe pas.");
- if (is_array($params))
- call_user_func_array($function_name_to_call, $params);
- else
- call_user_func($function_name_to_call, $params);
- }
- }
-
- /*
- ** Cette fonction supprime un évènement
- ** et tous les hooks liés.
- */
- public static function delete_event($event_name)
- {
- if (!self::event_exists($event_name))
- {
- if (self::$safe_mode === true)
- throw new Exception("[Safe Mode] L'évènement ''" . htmlspecialchars($event_name) . "'' n'existe pas.");
- }
- else
- unset(self::$events_list[$event_name]);
- }
-
- /*
- ** Cette fonction cré un hook sur
- ** un évènement.
- */
- public static function create_hook($event_name, $function_name_to_call)
- {
- if (!function_exists($function_name_to_call))
- throw new Exception("La fonction ''" . htmlspecialchars($function_name_to_call) . "'' n'existe pas.");
- if (!self::event_exists($event_name))
- throw new Exception("L'évènement ''" . htmlspecialchars($event_name) . "'' n'existe pas.");
- $hook_exists = self::hook_exists($event_name, $function_name_to_call);
- if (self::$safe_mode === true && $hook_exists === true)
- throw new Exception("[Safe Mode] Le hook ''" . htmlspecialchars($event_name) . '->' . htmlspecialchars($function_name_to_call) . "'' existe déjà.");
- self::$events_list[$event_name][$function_name_to_call] = $function_name_to_call;
- }
-
- /*
- ** Cette fonction vérifie si un
- ** hook existe.
- **
- ** Return: true/false.
- */
- public static function hook_exists($event_name, $function_name_to_call)
- {
- if (!self::event_exists($event_name))
- throw new Exception("L'évènement ''" . htmlspecialchars($event_name) . "'' n'existe pas.");
- if (array_key_exists($function_name_to_call, self::$events_list[$event_name]) === true)
- return true;
- else
- return false;
- }
-
- /*
- ** Cette fonction supprime un hook
- ** existant.
- */
- public static function delete_hook($event_name, $function_name_to_call)
- {
- if (!self::hook_exists($event_name, $function_name_to_call))
- {
- if (self::$safe_mode === true)
- throw new Exception("Le hook ''" . htmlspecialchars($event_name) . '->' . htmlspecialchars($function_name_to_call) . "'' n'existe pas.");
- }
- else
- unset(self::$events_list[$event_name][$function_name_to_call]);
- }
- }
- }
-
- ?>
<?php
/*
** PHP Events Manager
** Version 1.2.1 (26/08/2007)
** Auteur : Psykocrash (SERRAJ Younes)
**
** PHP Events Manager. Programmation évènementielle en PHP5.
** Copyright (C) 2007 SERRAJ Younes - Tous droits réservés.
**
** Licence : http://www.gnu.org/licenses/lgpl.txt
**
** Cette bibliothèque est un logiciel libre ; vous pouvez la redistribuer ou
** la modifier suivant les termes de la Licence Générale Publique Limitée
** GNU telle que publiée par la Free Software Foundation dans la version 2.1
** de la License.
**
** Cette bibliothèque est distribuée dans l’espoir qu’elle sera utile, mais
** SANS AUCUNE GARANTIE : sans même la garantie implicite de
** COMMERCIABILISABILITÉ ou d’ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez
** la Licence Générale Publique Limitée pour plus de détails.
** ** Vous devriez avoir reçu une copie de la Licence Générale Publique Limitée
** avec cette bibliothèque ; si ce n’est pas le cas, écrivez à la :
** Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
** MA 02111-1307, USA.
*/
if (!defined('PEM_PHP5_'))
{
define('PEM_PHP5_', true);
class PEM
{
protected static $events_list = array();
public static $safe_mode = false;
/*
** Cette fonction cré un évènement
** sur lequel pourront être placés
** des hooks.
*/
public static function create_event($event_name)
{
$event_exists = self::event_exists($event_name);
if (self::$safe_mode === true && $event_exists === true)
throw new Exception("[Safe Mode] L'évènement ''" . htmlspecialchars($event_name) . "'' existe déjà.");
if (!$event_exists)
self::$events_list[$event_name] = array();
}
/*
** Cette fonction vérifie si un
** d'évènement existe.
**
** Return: true/false.
*/
public static function event_exists($event_name)
{
if (!is_array(self::$events_list)) return false;
if (array_key_exists($event_name, self::$events_list) === true)
return true;
else
return false;
}
/*
** Cette fonction déclanche un évènement.
*/
public static function raise_event($event_name, $params = '')
{
if (!self::event_exists($event_name))
throw new Exception("L'évènement ''" . htmlspecialchars($event_name) . "'' n'existe pas.");
foreach (self::$events_list[$event_name] as $function_name_to_call)
{
if (!function_exists($function_name_to_call))
throw new Exception("La fonction ''" . htmlspecialchars($function_name_to_call) . "'' n'existe pas.");
if (is_array($params))
call_user_func_array($function_name_to_call, $params);
else
call_user_func($function_name_to_call, $params);
}
}
/*
** Cette fonction supprime un évènement
** et tous les hooks liés.
*/
public static function delete_event($event_name)
{
if (!self::event_exists($event_name))
{
if (self::$safe_mode === true)
throw new Exception("[Safe Mode] L'évènement ''" . htmlspecialchars($event_name) . "'' n'existe pas.");
}
else
unset(self::$events_list[$event_name]);
}
/*
** Cette fonction cré un hook sur
** un évènement.
*/
public static function create_hook($event_name, $function_name_to_call)
{
if (!function_exists($function_name_to_call))
throw new Exception("La fonction ''" . htmlspecialchars($function_name_to_call) . "'' n'existe pas.");
if (!self::event_exists($event_name))
throw new Exception("L'évènement ''" . htmlspecialchars($event_name) . "'' n'existe pas.");
$hook_exists = self::hook_exists($event_name, $function_name_to_call);
if (self::$safe_mode === true && $hook_exists === true)
throw new Exception("[Safe Mode] Le hook ''" . htmlspecialchars($event_name) . '->' . htmlspecialchars($function_name_to_call) . "'' existe déjà.");
self::$events_list[$event_name][$function_name_to_call] = $function_name_to_call;
}
/*
** Cette fonction vérifie si un
** hook existe.
**
** Return: true/false.
*/
public static function hook_exists($event_name, $function_name_to_call)
{
if (!self::event_exists($event_name))
throw new Exception("L'évènement ''" . htmlspecialchars($event_name) . "'' n'existe pas.");
if (array_key_exists($function_name_to_call, self::$events_list[$event_name]) === true)
return true;
else
return false;
}
/*
** Cette fonction supprime un hook
** existant.
*/
public static function delete_hook($event_name, $function_name_to_call)
{
if (!self::hook_exists($event_name, $function_name_to_call))
{
if (self::$safe_mode === true)
throw new Exception("Le hook ''" . htmlspecialchars($event_name) . '->' . htmlspecialchars($function_name_to_call) . "'' n'existe pas.");
}
else
unset(self::$events_list[$event_name][$function_name_to_call]);
}
}
}
?>
Conclusion
J'ai choisis la catégorie Divers parce que je ne sais vraiment pas laquelle choisir.
Si vous avez des idées d'amélioration, n'hésitez pas. Dans son état naissant, cette application remplit déjà pleinement sa fonction, mais on peut toujours la développer ;)
Historique
- 25 août 2007 14:03:01 :
- Possibilité de déclencher les évènements en les appelant comme des méthodes de la classe PEM.
Gestion des erreurs via exceptions.
Correction de deux bugs.
- 26 août 2007 18:37:51 :
- Classe désormais statique. Utilisation des comparaisons strictes.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Valeur retourné par un Objet de Type image??? [ par DJPGM ]
C quoi la valeur que retourne une image comme dans l'exemple suivant???<form name="ChoixImage" method="post" action="Images.php" > <input
Passage d'url trop long [ par matmax ]
J ai un problème lorsque je veux passer un objet d'une page à une autre ou rappeller ma page avec un traitement different.J ai linéarisé mon objet mai
probleme de classe en php [ par Elkaire ]
Donc voila mon probleme!!dans une premiere page je rensegne les insances de mon objet. Une fois renseigné je peux réutiliser les instances cet objet d
objet embed [ par elanspeech ]
bonjour, je rencontre des problemes avec l'objet embed qui ne fonctionne pas systematiquement. son fonctionnement est aleatoire. le chemin vers le fic
Gestion d'évènement souris [ par BSide ]
Bonjour,j'essaie depuis un sacré moment de faire fonctionner le code qui suit...(récupéré dans la source de MySQL)Impossible de le faire tourner !!! L
objet requis!! [ par saad123 ]
salut!! g un p'tit probleme je cherche a faire un site de livraison de pizza mais g un prb pour calculer le montant d'une commande, j'utilise du javas
Tuer un Processus Excel (objet COM) [ par nerikT ]
Bonjour à tous !J'ai un grros problème.J'utilise un objet COM pour crere un fichier Excel, et à la fin du script, le processu est toujours en mémoire
transferer une variable d'objet de page en page ?? [ par Arkko ]
slt ... j'aimerais savoir si y'a un moyen de transferer une variable d'objet d'une page a un autre ???exemple:1.php:<?MaClasse = new Maclasse;?>
Quand on parle de Classe [ par Tomcube ]
C'est une question très vaste,On parle de plus en plus de programmation objet. Qui dit programmation objet dit classe. D'ailleurs, c'est fou le nombre
Probleme avec serialize et unserialize [ par matou82 ]
J'ai un objet que je serialize et passe en paramètre dans l'url d'un popup.Dans ce popup je le unserialize. Il s'agit d'un objet possédant une fonctio
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|