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
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|