IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

affichage lisible du code source


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut affichage lisible du code source
    bonjour,
    voici ma démarche pour gérer l'affichage de mes pages.
    Dans une variable je récupère tous le code html en utilisant des simpes quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $var='<form method="post" action="'.$_SERVER[PHP_SELF].'>';
    En gros j'utilise des simple quotes plutôt que des doubles parce que c'est plus rapide et plus pratique puisque pas besoin de déspécialiser les "". De plus je stocke tout dans une variable pour n'avoir à faire qu'un seul echo, je préfère ça plutôt que d'avoir des echo de partout.

    Le problème est que mon le code source de mes pages devient illisible puisque tout s'affiche à la suite, il n'y a pas de retour à la ligne.
    Je pensais utiliser des \n puis la fonction nl2br malheureusement il faut que les \n soient entourés de "" et non pas de '', sinon ils ne sont pas interprétés.

    La solution serait donc d'utiliser des "" autour seulement de \n mais ça ne me semble pas très propre ou d'utiliser str_replace pour remplacer \n par des <br \>.

    Votre avis sur ma façon de faire ? quelle méthode utiliser vous pour avoir des codes soures lisibles ?

    Pour des pages élaborées je pourrai utiliser des templates mais pour des pages simples je ne veux pas en utiliser.

    Merci pour vos lumières.

  2. #2
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Ta méthode est mauvaise. Il vaut mieux plusieurs echo dans une page qu'un seul qui affiche tout le code (html et php).

    pourquoi nourrir d'html la pseudofonction echo ?

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    deux solutions :
    1. Code : Sélectionner tout - Visualiser dans une fenêtre à part
      '<div>bla bla bla</div>' . "\n"
    2. utiliser un editeur de texte (comme jEdit) ou une extension firefox qui t'indente ton code source html

    Je me sers de la première ponctuellement, pour tester, et de la deuxième pour debugger.

  4. #4
    Membre actif Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Points : 254
    Points
    254
    Par défaut
    je crois bien que macbook a raison. Tu éprouves des difficultées parce que tu t'es fixé un standard plutôt bizare. Je te donne deux façons que j'aurais de m'y prendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Avec des echo
    echo("<html>\n");
    echo("  <body>\n");
    //...
    echo("  </body>\n");
    echo("</html>\n");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    En atlernance PHP-HTML
    <?php //code php ?>
    <html>
      <body>
        <a href="<?=$url?>>
      </body>
    </html>
    <?php //code php ?>
    La première solution est plus propre mais plutôt longue lorsqu'on doit mettre beaucup de de paramètres avec des double quotes.

    La deuxième solution demande un peu moins de travail mais parait plus chargée quoi que plus lisible.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    merci pour les réponses.

    Je ne comprends pas pourquoi ma méthode n'est pas bonne, j'ai lu des bench affirmant que multiplier les echo était plus long que d'en faire un seul gros et ce pas juste pour la génération de la page mais aussi pour le temps d'affichage chez le client. Il vaut mieux envoyer tout d'un coup que par paquet.

    Mr N. >
    donc hormis ponctuellement les sources de tes pages s'affichent sur une seule ligne ? Quelle extension firefox utilises-tu, j'ai l'extension Web Developper mais aucun outil dans la partie Voir Source ne me permet de lire la partie générée par php autrement que sur une seule ligne.

    D'autres avis ?

  6. #6
    Membre actif Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Points : 254
    Points
    254
    Par défaut
    Au pire, tu peut te générer une énorme string en HereDoc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $chaine = <<MA_CHAINE
    <html>\n
      <body>\n
        Tout plein de code HTML\n
      </body>\n
    </html>\n
    MA_CHAINE;
    echo($chaine);
    Si ça s'applique à ton cas, tant mieux! Tu peut y mettre des \n et des variables!

    Ta méthode est peut-être meilleure pour le bench mais elle est moins bonne pour ce qui est de la flexibilité. Faire attention à l'efficatité de son code est une très bonne habitude cependant.

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pour les bench, je sais pas, j'aurais tendance à dire que faire plein de concaténation est plus pénalisant que d'envoyer au fur et à mesure.
    Cependant j'ai tendance à tout envoyer d'un coup, je trouve plus flexible/maintenable de gérer des strings que de jouer avec ob_...

    Pour l'extension Firefox je parlais de ça :
    https://addons.mozilla.org/extensions/moreinfo.php?id=655&application=firefox
    Et je viens de tomber sur ça :
    https://addons.mozilla.org/extensions/moreinfo.php?id=697&application=firefox

    à tester, ton feedback est le bienvenu.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    >>> Mr N.
    merci pour la première extension, elle me semble effectivement très pratique.
    Je vais regarder la 2ème.
    Je constate que toi aussi "tu préfères tout envoyer d'un coup", j'avis oublié les possibilités de buffering qui est plutôt bien mais pourquoi serait-ce moins flexible/maintenable ?

    >>> FrankOVD
    la méthode HereDoc semble utile. Je trouve ça mieux que de fermer et ouvrir des blocs php <? php ... ?> parceque là encore niveau performance c'est pas top. Pourquoi la méthode utilisant des concaténations seraient moins flexibles que la multiplication des echo ?

    J'en proposerai une autre qui va peut-être vous faire crier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $var='<form id="truc"...>
       <select>
         <option>
         ....
       </select>
       </form>';
    En configurant mon éditeur (scite) pour que un changement de ligne soit remplacé par un line feed \n et ainsi j'obtiens un code source indenté.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    un lien qui me semble intéressant :
    http://frederic.bouchery.free.fr/?2004/08/10/9-Echo-Lapin-Ou-Tortue

Discussions similaires

  1. Comment empêcher l'affichage d'un code source?
    Par kaselander dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/03/2009, 14h13
  2. code source pour l'affichage d'un arbre
    Par med_anis_dk dans le forum C
    Réponses: 5
    Dernier message: 27/05/2006, 15h11
  3. Comment interdir l'affichage du code source d'un site ?
    Par jj del amorozo dans le forum Sécurité
    Réponses: 10
    Dernier message: 14/03/2006, 16h23
  4. affichage du code source!! :-(
    Par beavis6511 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 20
    Dernier message: 12/12/2005, 14h27
  5. Affichage de caractère spéciaux absent dans le code source
    Par HNT dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 03/11/2005, 22h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo