[PHP5] CLASSE DE LOG

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 22 avril 2006 à 19:02
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 26 août 2006 à 20:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37163-php5-classe-de-log

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 août 2006 à 20:49
Hello,

désolé, je n'avais jamais vu ce message...je réponds avec un peu de retard lol... ;-)
En bonne POO, il ne faut pas mélanger le html et la classe. Donc non. D'un autre côté, PHP génère du html...alors...c'est un peu chacun qui voit midi à sa porte, au fond.
PHP5 offre de base une méthode magique retournant l'objet sous forme de chaîne...on peut en déduire que les dév de php ne sont pas contre ce mélange (__toString).
cs_mfaraday Messages postés 144 Date d'inscription vendredi 18 avril 2003 Statut Membre Dernière intervention 4 janvier 2010
28 avril 2006 à 21:09
Re

En fait ma question précédente n'est pas une question de possibilité mais d'opportunité...

Est-il plus opportun (utile ? logique ?) de mettre un méthode dans une classe retournant le html ou juste une fonction hors de la classe.

Florian
cs_mfaraday Messages postés 144 Date d'inscription vendredi 18 avril 2003 Statut Membre Dernière intervention 4 janvier 2010
28 avril 2006 à 13:29
Salut

Je rebondit sur le commentaire de FhX et fait par la même une petite digression.

Je suis en train de développer des classes pour un projet perso et me posais justement la question concernant les fonctions retournant du (x)html... peut-on le faire dans une classe ou doit-on créer une fonction externe ?

Désolé pour ce petit écart...

Florian
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 avril 2006 à 10:08
FhX => je suis d'accord avec toi, j'aurais dû séparer. De même pour la mise en forme...mais là je suis moyennement d'accord lol. Disons que j'aurais dû faire une classe séparée, mais cela ne me dérange pas de faire une classe qui crée une mise en forme.
Au passage, le xml n'est PAS de la mise en forme...le xsl, oui... :-)
Si je ne l'ai pas fait, c'est parce que j'ai extirpé cette classe de mon projet au taf, et qu'on a bcp de classes déjà. Je ne voulais pas créer des classes supplémentaires avec uniquement une méthode (LogToHtml par exemple), pour que ce soit plus simple à utiliser au final, par mes collègues.
Par contre, une classe LogToXml, LogToFile...là je suis moins d'accord. Ca fragment bien trop, pour pas grand chose, à mon sens. La seule "sortie" que j'aurais effectivement dû faire, c'est LogToHtml. J'ai hésité, à vrai dire. Et on n'est pas obligé d'utiliser cette dernière méthode. J'ai bien fialli la virer, et mettre en forme uniquement dans log.detail.php (bref, dans une page php classique).

CouCou => par simple soucis de clarté. Quand on lit, on sait directement à quel libellé fait référence tel index numérique.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
24 avril 2006 à 09:10
private $aLevels = array (
0 => 'UNKNOWN',
1 => 'SELECT',
2 => 'UPDATE',
3 => 'INSERT',
4 => 'DELETE'
);


pourquoi ne pas mettre :

private $aLevels = array (
'UNKNOWN',
'SELECT',
'UPDATE',
'INSERT',
'DELETE'
);

?
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
22 avril 2006 à 19:02
Moi ce qui me gène, c'est que j'aurais bien vu ta classe de base qui fait un logging de base via les variables, et les classes qui étendent le tout niveau html.
Genre un truc comme ca :

Class oLogger {}
Class oLogToXml {}
Class oLogToFile {}
Class oLogToHtml {}
Class oLogToDatabase {}

Quelque chose comme ca... C'est plus joli moi jtrouve :)
Comme ca, dans ta classe de BDD par exemple, imaginons ca :

if (true === $log && substr (strtoupper (trim ($this->s_db_sql)), 0, 6) !== 'SELECT') {
if ( $debug 'xml' ) $ologged new oLogToXml;

$destId = (isset ($_SESSION['dest_id']))?$_SESSION['dest_id']:0;
$ologger -> init ($this -> s_db_sql, $destId);

$ologger->write_to_log(); // Qui sera une méthode commune à toutes les classes.
}

Quelque chose comme ca.
Tfacon, moi jdis ca, c'est que j'aime pas voir du HTML ou du XML ou n'importe quoi qui fasse de la mise en forme en sortie dans une classe :p