Rechercher : dans
Par :

[PHP] Test d'une classe

Dernière réponse le 29 nov 2006 à 12:35:02 kij_82, le 29 nov 2006 à 09:55:37 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un petit soucis actuellement. Pour les besoins d'un projet, j'ai créé en PHP un classe pour mes logs, la voici :

Class Logger {
	
	var $_file 			= null;
	// --- Possoble mode value :
	// ---  0 = error mode (error traces)
	// ---  1 = debug mode (error + debug traces)
	var $mode 			= null;
	var $nb_log 		= null;
	var $list_log 	= null;
	
	function Logger ( $file, $mode ){
		$this->_file = $file;
		$this->mode = $mode;
		$this->nb_log = 0;
	}
	
	function addLogMessage ( $logMessage ){
		$this->list_log[$this->nb_log] = $logMessage;
		$this->nb_log++;
	}
	function clearLogs ( ){
		for ($i = 0; $i < $this->nb_log; $i++ )
			unset($this->list_log[$i]);
		$this->nb_log = 0;
	}
	function writeLogFile ( ){		
		// --- Open the log file (read/write)
		$fp = fopen($this->_file,"r+");
		// --- Go to the begin
		fseek($fp,0);
		// --- Write the message in the file
		for ( $i = 0; $i < $this->nb_log; $i++ ){
			fputs($fp,$this->list_log[$i]."\r\n");
		}
		// --- Close the log file
		fclose($fp);      
	}
}



Une classe toute simple donc. J'ai le probleme suivant : Au début d'un script, je créé une instance de cette classe :
$logger = new Logger("./log.txt",1);


Puis au cours de mon script, j'y fais appel pour mettre des messages d'erreur, warning, etc..
$logger->addLogMessage("toto part en vacances");


Et enfin, à la fin de mon script (ou en cas d'erreur), j'écris ces logs dans un fichiers texte (log.txt) :
$logger->writeLogFile();


Le hic c'est que rien ne s'affiche dans mon fichier texte, alors que les message sont bien ajoutés dans la liste de l'objet Logger.

Pourriez-vous tester chez vous cette classe pour savoir si cela vient uniquement de chez moi ou pas ? Car il y a 3 jour tout marchait bien, et maintenant je n'ai plus rien :s

Merci :) ~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic
et ya pas de bôg môsieu ! ~

Meilleures réponses pour « [PHP] Test d'une classe » dans :
PHP - Les classes Voir La notion de classe Php3 intègre un soupçon de caractéristiques empruntées aux langages orientés objet, c'est-à-dire la possibilité d'utiliser des objets, entités regroupant des données et des fonctions au sein d'une structure et rendant la...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Le mot-clé static ou les attributs et méthodes de classe en POO Voir(NOTE: Cet article explique la signification du mot-clé static au sein d'une classe. La signification de "static" en C n'a par exemple rien à voir.) Vous êtes débutant en programmation orientée objet. En Java, en C++...ou que sais-je encore,...
Caractéristiques du langage Php VoirL'interprétation du code Un code PHP (celui compris entre les délimiteurs ) est un ensemble d'instructions se terminant chacune par un point-virgule (comme en langage C). Lorsque le code est interprété, les espaces, retours chariot et...
PHP - Expressions régulières VoirQu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...

1

kij_82, le 29 nov 2006 à 11:34:19

J'ai une piste, si vous mettez cela dans un fichier php :

<?php

Class Logger {
	
	var $_file 			= null;
	// --- Possoble mode value :
	// ---  0 = error mode (error traces)
	// ---  1 = debug mode (error + debug traces)
	var $mode 			= null;
	var $nb_log 		= null;
	var $list_log 	= null;
	
	function Logger ( $file, $mode ){
		$this->_file = $file;
		$this->mode = $mode;
		$this->nb_log = 0;
	}
	
	function addLogMessage ( $logMessage ){
                echo "Message ajouté : ".$logMessage."<BR>";
		$this->list_log[$this->nb_log] = $logMessage;
		$this->nb_log++;
	}
	function clearLogs ( ){
		for ($i = 0; $i < $this->nb_log; $i++ )
			unset($this->list_log[$i]);
		$this->nb_log = 0;
	}
	function writeLogFile ( ){		
		// --- Open the log file (read/write)
		$fp = fopen($this->_file,"w+");
		// --- Go to the begin
		//fseek($fp,0);
                if ( $fp != false ){
		   // --- Write the message in the file
		   for ( $i = 0; $i < $this->nb_log; $i++ ){
                         echo "Message a écrire : ".$this->list_log[$i]."<BR>";
			 fputs($fp,$this->list_log[$i]."\r\n");
		   }
		   // --- Close the log file
		   fclose($fp);
                }
                else echo "Ne peut pas ouvrir le fichier<BR>";      
	}
}



$logger = new Logger("./log.txt",1);
$logger->addLogMessage("toto part en vacances");
$logger->addLogMessage("pour s'amuser un peu");
$logger->writeLogFile();

?>


Vous verrez que entre le temps ou les messages sont ajoutés dans la liste de l'objet et le temps ou ils sont repris pour etre affichés, ceux-ci n'ont plus de valeur (0) :s

Quelqun saurait-il ce qu'il se passe ? (ou peut etre que ca ne le fais que chez moi toujours, vous pouvez confirmer ?)
~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic
et ya pas de bôg môsieu ! ~

--
~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic
et ya pas de bôg môsieu ! ~

Répondre à kij_82

2

elsadelatoundra, le 29 nov 2006 à 12:11:13

Coucou !!

Bon, ne te fais pas une fausse joie : je ne pourrais/saurais pas t'aider ...

Par contre, je peux tester ce que tu as envoyé !

Quand j'exécute ton script à l'affichage j'ai :

Message ajouté : toto part en vacances
Message ajouté : pour s'amuser un peu
Message a écrire : toto part en vacances
Message a écrire : pour s'amuser un peu

Et dans le fichier log.txt :
toto part en vacances
pour s'amuser un peu

Voilà ... je ne sais pas si ça t'aide !!

Bon courage ;-)

ellessa mange des cerises

Répondre à elsadelatoundra

3

kij_82, le 29 nov 2006 à 12:19:26

Sérieusement ?!

Bahh !! Merci ca m'aide beaucoup... et en même temps j'aurais préféré que ca ne marche pas chez toi. Ca veut dire que mon environnement de test n'est pas bon ou cloche quelque part. Va falloir que je fasse une ré-installation :s

Merci ellessa pour ce coup de pouce :)
~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic
et ya pas de bôg môsieu ! ~

Répondre à kij_82

4

 elsadelatoundra, le 29 nov 2006 à 12:35:02

Mais de rien : heureuse d'avoir pu t'aider !!

Pour une fois que je peux aider les autres, ça me fait très plaisir ... d'autant plus que tu m'as bien aidée !!

Bon courage à toi !!

ellessa mange des cerises

Répondre à elsadelatoundra
Collection CommentÇaMarche.net