Suite à un différent qui a versé du sang et des larmes entre moi, développeur web surtout backend et mon collègue, développeur web surtout frontend, j'attends vos avis pour savoir comment afficher correctement le code HTML dans une vue PHP.

Réponse A : y'a de l'echo par ici
<?php
echo '<h1>Mon beau tableau</h1>';
echo '<table>';
foreach ($lignes as $colonnes) {
    echo '<tr>';
        foreach ($colonnes as $cellule) {
            echo '<td>'.$cellule.'</td>';
        }
    echo '</tr>';
}
echo '</table>';
echo '<p>'$ma_variable;'</p>'


Réponse B : la flemme d'ouvrir/fermer les balises php

<h1>Mon beau tableau</h1>
<table>
<?php
foreach ($lignes as $colonnes) {
    echo '<tr>';
        foreach ($colonnes as $cellule) {
            echo '<td>'.$cellule.'</td>';
        }
    echo '</tr>';
}
?>
</table>
<?php echo '<p>'$ma_variable;'</p>'


Réponse C : HTML tant que possible

<h1>Mon beau tableau</h1>
<table>
<?php foreach ($lignes as $colonnes): ?>
    <tr>
        <?php foreach ($colonnes as $cellule): ?>
            <td><?php echo $cellule; ?></td>
        <?php endforeach; ?>
    </tr>
<?php endforeach; ?>
</table>
<p><?php echo $ma_variable; ?></p>
avatar« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique
D la reponse D.

Sinon plutot B
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
yN a cassé ma signature :o
Plutot la C : ça permet de séparer la page html du vrai traitement php et éviter de casser l'IHM lors d'une refonte du code php et inversement

sinon la A out la B dans les cas bidons et selon l'humeur. cheeky
avatar
D'ailleurs parler d'inclusion d'HTML dans du PHP est conceptuellement faux, on ajoute du PHP dans du HTML
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
yN a cassé ma signature :o
D) utiliser un moteur de template comme Smarty
E) utiliser Python + Django ou Ruby + Rails
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
Ha non surtout pas ruby on rail... C'est daubatique au possible...
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
yN a cassé ma signature :o
Je ne connais pas, je n'ai jamais fait de Ruby
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
J'ai installé Redmine ca suffit grin
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
yN a cassé ma signature :o
Maintenant qu'il y a eu votes et réponses, mon avis pour ne pas influencer smile
Mon collègue frontend est partisan du B, quand je suis partisan du C. Quand on travaille sur des projets communs, l'inconvénient est qu'on se retrouve avec des vues qui n'ont pas toutes la même structure, quand ce n'est pas dans une même vue que les deux écoles se mélangent.

De mon point de vue, l'inclusion systématique est nécessaire au code : d'une part les echos s'inscrivent à la suite sans saut de ligne dans le code source d'une page. Certains outils comme Firebug analysent et découpent le code correctement, mais un affichage basique du code source n'a ni retour à la ligne ni indentation avec une série de balises via echo.
D'autre part, c'est important pour l'IDE qui dans une vue HTML va se charger lui-même des retours, indentations en fonction du niveau d'imbrication, d'afficher les ouvertures/fermetures, la coloration syntaxique, proposer l'autocomplétion et les suggestions de paramètres... en somme, dans un echo, l'IDE ne s'occupe plus de ce qui se passe à l'intérieur en jugeant qu'il s'agit de php et non de HTML, ses avantages disparaissent et il est réduit au rang de simple bloc note.
avatar« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique
Un bon editeur PHP est capable de regarder si il y a du HTML dans les chaines et des les afficher et traiter comme tel
avatarProud to be CAKE©®™
The cake is a lie! - Love your weighted companion cube

->986-Studio's Wonder Project!<-
yN a cassé ma signature :o
D'où l'intérêt d'utiliser un moteur de template, ça permet de totalement découpler les deux parties, sans avoir à se poser ce genre de questions.
Tu bénéficies alors de la complétion et tous les autres avantages de l'IDE à la fois sur la partie HTML et sur la partie PHP ; je suis sûr que squalounet pourra te faire un long topo sur PHP Storm grin

Son avis pourrait être intéressant, vu qu'il fait ça toute l'année.


(juste par curiosité, as-tu déjà bossé avec autre chose que du PHP pur ?)
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
J'ai survolé rapidement, sans tout lire en détail ; mais vu qu'on parle de moi, essayons de participer ^^

A > nan, c'est mega moche
B > je le fais de temps en temps, mais très rarement ; trop de mélange "données / présentation"
C > j'ai tendance à faire ça, quand mes templates sont en PHP (ça arrive sur certains projets ; sur d'autres, c'est fréquemment du Twig -- là où on te disait "smarty" plus haut, la solution moderne serait plutôt "twig").

Passer par un moteur de templates autre que PHP te rajoutera souvent des features sympa, comme, pour n'en citer que deux :
* Des flags te disant, dans une boucle, si tu es sur la première ou la dernière itération (Twig fait ça, c'est grave pratique dans certains cas)
* De l'échappement HTML automatique -- sur les portions de code que tu as montré, tu devrais t'assurer de passer toi-même par htmlspecialchars() (et ses 3 paramètres, pour aller jusqu'à l'encodage) quasiment à chaque fois que tu veux réaliser une sortie

Donc, version résumée :
* Dans le cas "général" sans contexte ni rien (le cas ici) : Twig comme moteur de template
* Dans le cas de templates en PHP : option C
Godzil (./4) :
D'ailleurs parler d'inclusion d'HTML dans du PHP est conceptuellement faux, on ajoute du PHP dans du HTML

A partir du moment où tu as du PHP à exécuter, le fichier entier passe par l'interpréteur PHP ; donc, conceptuellement, tu fais un peu passer ce que tu veux (ici du HTML) à la moulinette PHP.
flanker (./5) :
D) utiliser un moteur de template comme SmartyE) utiliser Python + Django ou Ruby + Rails

D > En 2014, plutôt que Twig que Smarty (smarty c'était "le" truc dans les années 2000 ; et encore, plus première moitié / milieu que fin -- encore qu'il y a eu du boulot sur smarty 3 qui d'après certains serait pas trop mal... mais absolument jamais utilisé)
E > Ou pour rester sur du PHP, tu peux retrouver pas mal de la logique de Django / RoR dans symfony 2, non ?
Meowcate (./9) :
Mon collègue frontend est partisan du B, quand je suis partisan du C. Quand on travaille sur des projets communs, l'inconvénient est qu'on se retrouve avec des vues qui n'ont pas toutes la même structure, quand ce n'est pas dans une même vue que les deux écoles se mélangent.

A vous de définir une norme de codage et de vous y tenir. Quitte à mettre en place des outils interdisant le commit si le code sur le point d'être commité viole la norme (au début, c'est chiant ; et ensuite tu t'y fais ; et après ça tu configures ton IDE correctement pour que ça soit toujours formaté comme il faut).
Ça peut être une norme "de la communauté" (cf les PSR-2 et 4 je crois, pour PHP ; mais elles ne doivent pas tellement couvrir les vues), la norme "du framework" quand tu en utilise un (comme symfony ou Twig), une norme "entreprise" ou une norme "du projet" ; dans l'ordre décroissant de préférence.
flanker (./11) :
je suis sûr que squalounet pourra te faire un long topo sur PHP Storm biggrin.gif

PhpStorm c'est le bien tongue
Pour des vues, encore, c'est pas là que ça apporte le plus de bénéfices ; tu as au moins l'auto-complétion sur HTML (et Twig je crois, maintenant) ; et pour du HTML, tu as bien sûr le support Emmet ( http://docs.emmet.io/ ) \o/
flanker (./11) :
Son avis pourrait être intéressant, vu qu'il fait ça toute l'année.

Je fais peu de front "pur", en fait ; j'en ai même rarement vraiment fait : je suis plus "backend" de cœur ^^
Mais quand j'en fais, ça revient en gros à ce que j'ai résumé ici.

(sujet qui va s'ajouter à mes sujets ; donc je reviendrai par ici s'il y a des questions / commentaire ^^ )
avatarTutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall
squale92 (./12) :
Ou pour rester sur du PHP, tu peux retrouver pas mal de la logique de Django / RoR dans symfony 2, non ?


À ma connaissance (très limitée) de Symfony 2, ce dernier reste vraiment loin de Django (notamment à cause de l'absence d'introspection en PHP).

Je ne connaissais pas Twig (ça fait longtemps que j'ai arrêté le PHP tongue), je note le nom, sait-on jamais ^^

Sinon, qu'est-ce donc qu'Emmet ?
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
Emmet (ça s'appelait "Zen coding", il y a quelques temps), c'est une façon "raccourcie" de saisir du HTML.
Plutôt que de tapper des lignes et des lignes de balises, tu tapes quelque chose qui ressemble à une syntaxe de sélecteurs CSS, et c'est automatiquement transformé (par ton IDE / ton éditeur de texte) en HTML correspondant.

Par exemple, tu taperais ceci :
html>(head>title)+body>div#main>ul.maclasse>li*5

Et une tabulation après, ça serait automatiquement transformé en cela :
<html>
<head>
	<title></title>
</head>
<body>
	<div id="main">
		<ul class="maclasse">
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
		</ul>
	</div>
</body>
</html>


Bon, je fais peu de front, donc ça me sert assez rarement... et donc je maîtrise pas vraiment... Mais quand je pense à l'utiliser, c'est grave pratique ^^
avatarTutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall
Entre "réponse C" et "utiliser un moteur de template" il n'y a pas grande différence, la C ne fait qu'utiliser PHP comme un moteur de template qui a la particularité d'être plus verbeux et plus permissif que tous les autres. Selon les cas ça peut être un avantage (plus performant) ou un inconvénient (moins sécurisé) par rapport à d'autres moteurs de template, mais les questions qui se posent deviennent exactement les mêmes qu'à choisir entre Twig, Smarty, ou n'importe quoi d'autre, du coup je rejoins l'avis de squale92.

Juste une petite question : tu utilises les syntaxes alternatives de toutes les structures de contrôle PHP pour une raison particulière ? Je trouve que le code est déjà assez long comme ça, en partie à cause de toutes les balises ouvrantes/fermantes qui polluent bien plus que les "{{" "}}" souvent proposés dans d'autres moteurs, et utiliser les constructions habituelles réduirait (à mon humble gout à moi) un peu l'overhead :

<h1>Mon beau tableau</h1>
<table>
<?php foreach ($lignes as $colonnes) { ?>
    <tr>
        <?php foreach ($colonnes as $cellule) { ?>
            <td><?php echo $cellule; ?></td>
        <?php } ?>
    </tr>
<?php } ?>
</table>
<p><?php echo $ma_variable; ?></p>

Après, si tu n'as pas de grosses contraintes de performances, comme tout le monde le dit le plus simple serait d'utiliser un moteur de template smile
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)
Zeph (./15) :
tu utilises les syntaxes alternatives de toutes les structures de contrôle PHP pour une raison particulière ?

C'est fréquemment "ce qui se fait" quand tu utilises PHP comme langage / moteur de template (en fait, je n'ai pas souvenir d'avoir, sur ces dernières années, utilisé la syntaxe "normale" dans des templates).
C'est / Ça serait plus lisible que les accolades.

Pour ce qui est des performances, les moteurs de template ont tendance à compiler ceux-ci en code PHP (c'est ce que faisait smarty 2, j'imagine que smarty 3 fait pareil ; c'est aussi ce que fait Twig, il me semble), ce qui réduit pas mal l'overhead du moteur de template.
Au final, passer par un moteur de templates peut coûter un peu en perfs, mais en faisant gagner suffisamment en features / simplicité / maintenabilité pour que ça vaille largement le coup (au risque de pousser un peu à l'extrême : si ce qui comptait c'était plus les perfs que le reste, tu coderais ton site en C -- y'a pas grand monde qui fait du web en C ^^ )
avatarTutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall
Au final, passer par un moteur de templates peut coûter un peu en perfs, mais en faisant gagner suffisamment en features / simplicité / maintenabilité pour que ça vaille largement le coup (au risque de pousser un peu à l'extrême : si ce qui comptait c'était plus les perfs que le reste, tu coderais ton site en C -- y'a pas grand monde qui fait du web en C ^^ )

Sans compter que le temps passé à optimiser peut vite coûter beaucoup plus cher qu'un serveur plus puissant ^^
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
Le code "compilé" par les moteurs de template (je n'ai pas regardé Twig, juste Smarty 2 et 3) est de très mauvaise qualité et l'overhead est loin d'être négligeable. Je suis d'accord qu'il vaut mieux choisir un langage adapté si c'est une contrainte importante, mais ça n'est parfois pas une option envisageable (un exemple : yAronet).
avatarAll right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)