DÉBOGAGE D'UN CODE PHP (SUIVIT DES VARIABLES)

cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 - 14 août 2010 à 09:14
originalcompo Messages postés 65 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 9 octobre 2007 - 15 août 2010 à 23:11
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/52169-debogage-d-un-code-php-suivit-des-variables

originalcompo Messages postés 65 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 9 octobre 2007 1
15 août 2010 à 23:11
Je découvre HEREDOC, donc voilà:

je n'ai pas réussi à faire de concaténation de variable {$JS.$CSS}, et PHP_EOL est ignoré et affiché tel quel (pas anormal, puisqu'avec HEREDOC il suffit de sauter la ligne !)

J'ai finalement réussi à obtenir ce que je voulais (et c'est vrai que c'est mieux) en faisant ainsi:

$this->BEGIN =
<<
<HTML>
<HEAD>
<TITLE>DEBUG</TITLE>
<meta name='author' content='OriginalCompo' />
<meta name='owner' content='Jean-Pierre Aguado' />
<meta name='Debug unit for PHP 5' content='Debug unit for PHP 5' />
<meta name='keywords' content='PHP5, Debug' />

{$JS}

{$CSS}
</HEAD>

BEGIN;
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
15 août 2010 à 18:54
Merci pour l'utilisation de la notation Heredoc qui allège le code en évitant les guillemets simples/doubles et les opérateurs de concaténation à répétition.
Mais je vois que tu n'es pas allé au bout de la démarche comme ici :
$this->BEGIN .= PHP_EOL
.$JS.PHP_EOL
.$CSS.PHP_EOL
.'</HEAD>'.PHP_EOL
.PHP_EOL
.'';

Alors qu'il suffit d'écrire chaque variable entre accolades :
{PHP_EOL.$JS.PHP_EOL.$CSS.PHP_EOL}
</HEAD>{PHP_EOL.PHP_EOL}


Il suffisait de se souvenir qu'au départ, les variables devaient être encadrées d'accolades en PHP. Cette habitude a disparu avec l'évolution du langage mais reste néanmoins utilisable.

En ce qui concerne le CSS et le javascript, ton point de vue est tout à fait approprié.
Bonne continuation.
originalcompo Messages postés 65 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 9 octobre 2007 1
14 août 2010 à 19:47
oups, j'ai oublié dans les nouveautés la possibilité de ne créer ou mettre à jour le fichier de trace que lorsqu'on le désire grace à la méthode set_UpdateTrace($booleen)
Ex
$instance_ocDEBUG->set_UpdateTrace(false);
...
$instance_ocDEBUG->set_UpdateTrace(true); // à mettre avant la fin du script à deboguer
originalcompo Messages postés 65 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 9 octobre 2007 1
14 août 2010 à 19:20
Merci Delphiprog pour les commentaires.

__clone : je vais suivre le conseil. (Comme c'est une classe pour debuguer, je suis parti
du principe que l'utilisateur n'a aucun interet à essayer de faire des trucs bizarres, comme cloner cette classe, sauf s'il veut volontairement écraser ou planter ses résultats. Pour être totalemnt franc, j'avais aussi zappé cette fonctionnalité... je reviens tout juste à la programmation php !)

css: le probleme comme j'y fais allusion dans le code est que si on debogue plusieurs pages se trouvant dans des dossiers/chemins différents, il faut prendre en compte tous les
chemins, et les changer à chaque fois que l'on change de projet. Le fait de l'insérer dans le head fait que l'on n'a pas à toucher au source de la classe (moins de travail donc).
J'avais initialement externalisé le js et le css, pour revenir à cette dernière version qui est plus pratique. (De plus le css est spécifique à l'affichage du débogage, et n'est pas sensé évoluer ni être utilisé ailleurs).
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
14 août 2010 à 13:47
Pour que l'application du design pattern soit parfaite en PHP 5, il faut penser à surcharger la méthode magique __clone et à la déclarer de portée privée, tout comme le constructeur. Sans cela, il devient facile de multiplier les instances là où elles devraient être uniques.
Code intéressant, propre et bien écrit.
Personnellement, j'aurais utilisé la notation Heredoc pour alléger le code, notamment au niveau de l'affectation du membre $this->BEGIN. Mais c'est affaire de goût...
Quant au CSS employé, dans la mesure où il ne contient pas d'éléments générés dynamiquement, il serait bon de l'externaliser, séparant ainsi le contenu de la mise en page. Dans la mesure où le code est facilement modifiable, chacun pourra l'adapter à ses goûts, ses besoins ou encore aux contraintes de développement qui lui sont imposées.
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
14 août 2010 à 09:14
Travailler en dev pour le debugging et commiter en prod par la suite serait plus sur.
Rejoignez-nous