Accueil > > > PHP5 - CLASSE DE LOGGING DE CLASSES.
PHP5 - CLASSE DE LOGGING DE CLASSES.
Information sur la source
Description
Cette classe sert à logguer les différentes méthodes et autres fonctions que vous pouvez appeler dans un script.
En l'état pur, la classe ne sert pas à grand chose, mais elle est tellement simple qu'elle peut se faire hériter très facilement pour quelque chose de plus spécialiser (normal, c'est son but !).
Voici donc la classe basique et une classe dérivée qui peut logguer les actions d'appels de méthodes d'une classe SQL.
Source
- <?php
- class Logger {
-
- protected $objet = NULL;
- public $Log = array(
- 'method' => NULL,
- 'args' => NULL);
-
- public function __construct($objet) {
- $this->objet = $objet;
- }
-
- public function __call($name, $args) {
-
- $this->LogTo($name, $args);
- return call_user_func_array( array(&$this->objet, $name), $args);
-
- }
-
- protected final function LogTo($name, $args) {
- $this->Log['method'] = $name;
- $this->Log['args'] = $args;
- }
-
- public final function getLog() {
- return $this->Log;
- }
-
- public final function Clear() {
- $this->Log = array('method' => NULL, 'args' => NULL);
- }
-
- public function __get($var) {
- return $this->objet->$var;
- }
-
- public function __set($var, $val) {
- $this->$objet->$var = $val;
- }
-
- }
-
- class SQLLog extends Logger {
-
- private $array = array(
- 'SELECT' => 0,
- 'UPDATE' => 0,
- 'INSERT' => 0,
- 'DELETE' => 0);
-
- public $nb_query = 0;
- public $time_query = 0;
-
- public function __call($name, $args) {
-
- if ( strtolower($name) === 'query' ) {
- if ( isset($args) && !empty($args) ) {
- $typeofQuery = trim(substr($args[0], 0, 6));
- } else {
- $typeofQuery = trim(substr($this->objet->sql, 0, 6));
- }
-
- $this->array[$typeofQuery]++;
-
- $query_start = microtime(true);
- $output = call_user_func_array( array(&$this->objet, $name), $args);
- $this->time_query = microtime(true) - $query_start;
-
- $this->nb_query++;
-
- } else {
- $output = call_user_func_array( array(&$this->objet, $name), $args);
- }
-
- $this->LogTo($name, $args);
- return $output;
-
- }
-
- }
- ?>
<?php
class Logger {
protected $objet = NULL;
public $Log = array(
'method' => NULL,
'args' => NULL);
public function __construct($objet) {
$this->objet = $objet;
}
public function __call($name, $args) {
$this->LogTo($name, $args);
return call_user_func_array( array(&$this->objet, $name), $args);
}
protected final function LogTo($name, $args) {
$this->Log['method'] = $name;
$this->Log['args'] = $args;
}
public final function getLog() {
return $this->Log;
}
public final function Clear() {
$this->Log = array('method' => NULL, 'args' => NULL);
}
public function __get($var) {
return $this->objet->$var;
}
public function __set($var, $val) {
$this->$objet->$var = $val;
}
}
class SQLLog extends Logger {
private $array = array(
'SELECT' => 0,
'UPDATE' => 0,
'INSERT' => 0,
'DELETE' => 0);
public $nb_query = 0;
public $time_query = 0;
public function __call($name, $args) {
if ( strtolower($name) === 'query' ) {
if ( isset($args) && !empty($args) ) {
$typeofQuery = trim(substr($args[0], 0, 6));
} else {
$typeofQuery = trim(substr($this->objet->sql, 0, 6));
}
$this->array[$typeofQuery]++;
$query_start = microtime(true);
$output = call_user_func_array( array(&$this->objet, $name), $args);
$this->time_query = microtime(true) - $query_start;
$this->nb_query++;
} else {
$output = call_user_func_array( array(&$this->objet, $name), $args);
}
$this->LogTo($name, $args);
return $output;
}
}
?>
Conclusion
Alors comment ca tourne ?
Si avant, vous appeliez votre classe SQL comme suit :
$db = new mysql;
Il suffit pour cela de faire :
$db = new SQLlog( new mysql );
Et vous utilisez votre objet comme avant :
$db->query().
$db->fetch_row().
La classe de log est totalement transparente grâce à __call()... donc sans soucis pour l'utilisation :)
Historique
- 15 avril 2006 20:55:01 :
- Update de code :) C'est un peu plus propre maintenant !
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Class POO retourné le nom de l'objet [ par MeTh ]
Bonjour,Comment retourné le nom de l'objet déclaré?exemple :$monobjet = new GridR();comment recuperé $monobjet dans ma class?Merci
objet php5 surdéfinition de fonctions [ par poiuytrez3 ]
Bonjour, j'ai crée un objet php5 avec plusieurs membres privés. J'ai donc crée une fonction function __get($attribut){ return $this->attribut; } e
Probleme POO [ par cedriclomb ]
Bonjour,Aujourd'hui au programme casse tete chinois ! :DVoila j'ai une classe B qui est une extends de Aun objet $b=new B;et ensuite $b->loadModule
orienté objet en php [ par am1ra2 ]
bonjour, j'ai des connaissances sur la POO en php mais je ne connais pas comment implimenter la POO dans mes applications.
aide en php5 [ par RachDevelop ]
bonjour un tous je débute en php objet , si quelcun peut me m'aider avec un tutorial ou des conseils , car j'ai pas une grande vision objet et je rame
Cour sur la programmation oriente objet avec PHP5 [ par adama36 ]
Bonjour, Je suis développeur d'application dans une entreprise et je développe avec les langage PHP4/HTML/CSS. Vue l’évolution du langage PHP qu
message d'alerte pour eviter d'enregistrer la meme donner [ par msi079 ]
salut . j'ai crée un code php qui marche très bien . mais je voudrai juste qu'elle m'affiche un message d'erreur pour éviter les doublons . par exemp
php5 et moteur de template "smarty" [ par smahaneAAI ]
Bonjour tout le monde! J'ai eu un projet de la création d'un site web concernant les appelles d'offre, ce projet doit être réalisé en langage php5 et
$_server [ par azeiroph ]
Bonjour, Je tente actuellement de migrer un applicatif initialement sur php4 vers php5. La migration ce passait bien jusqu'à ce que je tombe sur le
PHP5 SQL TIME [ par ftsitoha ]
Bonjour les amies !!! Question web PHP- SQL -TIME? J’aimerai bien connaître l’erreur de ces 2 scriptes, mon attribue n’est pas ti
|
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
|