cs_stay
Messages postés493Date d'inscriptionjeudi 7 juillet 2005StatutMembreDernière intervention24 mai 2017
-
14 août 2010 à 09:14
originalcompo
Messages postés65Date d'inscriptiondimanche 3 avril 2005StatutMembreDerniè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.
originalcompo
Messages postés65Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention 9 octobre 20071 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és4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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és65Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention 9 octobre 20071 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és65Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention 9 octobre 20071 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és4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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és493Date d'inscriptionjeudi 7 juillet 2005StatutMembreDernière intervention24 mai 20174 14 août 2010 à 09:14
Travailler en dev pour le debugging et commiter en prod par la suite serait plus sur.
15 août 2010 à 23:11
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;
15 août 2010 à 18:54
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.
14 août 2010 à 19:47
Ex
$instance_ocDEBUG->set_UpdateTrace(false);
...
$instance_ocDEBUG->set_UpdateTrace(true); // à mettre avant la fin du script à deboguer
14 août 2010 à 19:20
__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).
14 août 2010 à 13:47
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.
14 août 2010 à 09:14