|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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 ;)
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
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
Sources en rapport avec celle ci
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
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|