24-12-2010, 11:24 AM
Avis perso :
Faire une classe de base pour avoir accès à la fonction log partout c'est pas très "clean" en terme de modélisation POO.
Une classe de gestion de Log par contre c'est très bien.
Quand on utilise des exceptions, le mieux est de toujours typer ses exceptions, celà permet ensuite de conditionner facilement la gestion des erreurs en fonction du type et du contexte :
Du coup, lorsque tu as un problème de langue, je reprend ton code :
Si tu ne veux pas interrompre ton programme et juste logger ton message, alors c'est dans l'exception qu'il faut le faire :
Sinon, si vous voulez aller plus loin dans la gestion des logs et des erreurs, même sans utiliser Zend Framework, allez voir la documentation de Zend_Log, à vous donnera sans doute des idées : http://framework.zend.com/manual/fr/zend...rview.html
Faire une classe de base pour avoir accès à la fonction log partout c'est pas très "clean" en terme de modélisation POO.
Une classe de gestion de Log par contre c'est très bien.
Quand on utilise des exceptions, le mieux est de toujours typer ses exceptions, celà permet ensuite de conditionner facilement la gestion des erreurs en fonction du type et du contexte :
class LangException extends Exception { }
Du coup, lorsque tu as un problème de langue, je reprend ton code :
if (array_key_exists($key,$this->msg)) {
return $this->msg[$key];
} else {
try {
throw new LangException('String internationalisée non trouvée: '.$key);
}
...
Si tu ne veux pas interrompre ton programme et juste logger ton message, alors c'est dans l'exception qu'il faut le faire :
class LangException extends Exception {
public function __construct($message = null, $code = 0, Exception $previous = null)
{
parent::__construct($message, $code, $previous);
$tab=array();
foreach ($this->getTrace() as $pile)
{
//Injection avec la clé afin de supprimer les doublons
$tab[$pile['class']]=$pile['class'];
}
$this->log(Log:EBUG,$this->getMessage().' dans ('.implode('->',array_reverse($tab)).')');
}
}
Maintenant à chaque fois que tu lèves une Exception de type LangException le message de l'exception et son contexte peuvent être loggé automatiquement...Sinon, si vous voulez aller plus loin dans la gestion des logs et des erreurs, même sans utiliser Zend Framework, allez voir la documentation de Zend_Log, à vous donnera sans doute des idées : http://framework.zend.com/manual/fr/zend...rview.html