Précédent   Forum du club des développeurs et IT Pro > PHP > Langage

Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP

Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Affichage des résultats du sondage: Comment produisez-vous votre HTML ?
En mélangeant le PHP et le HTML 107 52,20%
Avec echo 45 21,95%
Avec un moteur de template 81 39,51%
À ma manière 46 22,44%
Sondage à choix multiple Votants: 205. Vous ne pouvez pas participer à ce sondage.

Publicité
'
Réponse Actualité déjà publiée
 
Outils de la discussion
Vieux 26/10/2012, 14h49   #21
acesyde
Membre chevronné
 
Homme Pierre-Emmanuel Mercier
Ingénieur développement logiciels
Inscription : octobre 2006
Messages : 70
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Emmanuel Mercier
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2006
Messages : 70
Points : 671
Points : 671
Avec Razor (Asp.Net MVC)
acesyde est déconnecté   Envoyer un message privé Réponse avec citation 13
Vieux 26/10/2012, 15h00   #22
DavDev
Invité de passage
 
Homme
Développeur informatique
Inscription : octobre 2012
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Somme (Picardie)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Santé

Informations forums :
Inscription : octobre 2012
Messages : 1
Points : 2
Points : 2
Pour ma part, je préfère séparer.
Dans le HTML, que du HTML je veux dire la structure statique de la page.
Le dynamique est à la charge de jQuery (ajax).
Le PHP lui ne "gère" que ce qui est "données" et ce qui est lié au serveur, il ne retourne que des valeurs brutes par l'ajax que jQuery traite.
Donc pour une petite page dynamique j'ai 3 fichiers, .html .php et .js.

Pensez-vous que ça complique les choses ou si vous trouvez que ça offre plus de clareté ?
DavDev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2012, 15h03   #23
nflowerpower
Membre à l'essai
 
Inscription : octobre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 7
Points : 21
Points : 21
Des webforms avec asp.net / C#

Cela permet de bien séparé la partie présentation en html et le code objet dans le code begin.
nflowerpower est déconnecté   Envoyer un message privé Réponse avec citation 04
Vieux 26/10/2012, 15h13   #24
jreaux62
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 3 657
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 46
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 3 657
Points : 7 535
Points : 7 535
Envoyer un message via Skype™ à jreaux62
Bonjour,
je sépare en général le HTML du PHP. Je trouve que c'est plus clair et plus lisible.
Des echo ... peuvent être ponctuellement utiles (quand la séparation des codes ne se justifie pas).

Par contre, en tant qu'enc...leur de mouches professionnel, j'aurais écrit :
- "En séparant le HTML du PHP" au lieu de "En Mélangeant le PHP et le HTML"
- "En incluant le HTML dans le PHP (avec echo)" au lieu de "Avec echo"

J'ai failli cliquer "A ma manière", avant de voir les exemples donnés...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
"Quand le sage montre la lune, le sot regarde le doigt."
Confucius, Homme d'Etat et philosophe chinois (551-479 av. J.-C).
Site perso Mes tutos DVP
Gestion-Affichage de Nouvelles Affichage en tableau HTML Fonctions de redimensionnement d'images
jreaux62 est actuellement connecté   Envoyer un message privé Réponse avec citation 30
Vieux 26/10/2012, 15h23   #25
chymz
Invité de passage
 
Inscription : décembre 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 2
Points : 4
Points : 4
Comme @wxz j'utilise des vues PHP/HTML avec ob_start() pour les même raisons. Les moteurs de templates Twig, Smarty m'ont toujours rebuté... la flemme d'apprendre un nouveau langage PHP-like alors que PHP possède tout ce dont j'ai besoin et que je connais parfaitement du coup...
chymz est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/10/2012, 15h34   #26
Killing Joke
Membre actif
 
Inscription : février 2006
Messages : 69
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 69
Points : 174
Points : 174
Le père du PHP a me semble-t'il toujours été contre les templates, arguant qu'un template n'étant rien d'autre qu'une couche de plus par rapport à PHP.
Et en effet plus on va loin dans les templates (boucles, conditions, évaluations, ...) plus le template devient compliqué et spécifique et on tend à reproduire des choses qui existent nativement de manière + simple en PHP, parfois.

Perso dans la plupart des langages j'utilise pourtant des templates.
Killing Joke est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 26/10/2012, 15h40   #27
wamania
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 683
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 683
Points : 1 034
Points : 1 034
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class View
{
    private $data;
 
    public function render( $template, $data = array() ) 
    {
        $this->data = $data;
 
        ob_start();
        include $template;
        $content = ob_get_contents();
        ob_end_clean();
 
        return $content;
    }
}
index.php
Code :
1
2
$view = new View;
echo $view->render('template.php', array('title' => 'Ma page'));
template.php
Code :
1
2
3
4
5
6
7
<html>
<head>
<title><?=$this->title;?></title>
</head>
<body>
</body>
</html>
Simplifié pour l'exemple, mais complet.

A ajouter par exemple, l'impossibilité d'accéder en écriture aux données encapsulées dans la vue, par la vue.
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 26/10/2012, 16h03   #28
Zefling
Membre confirmé
 
Avatar de Zefling
 
Développeur Web
Inscription : avril 2007
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2007
Messages : 101
Points : 278
Points : 278
Je fais avec mon propre moteur de template en PHP, très simple sans de code complexe pour éviter d'en faire un langage avec une 20aine de balises spécifique à mes besoins... C'est un peu à ma manière.

Citation:
Envoyé par wamania Voir le message
Simplifié pour l'exemple, mais complet.

A ajouter par exemple, l'impossibilité d'accéder en écriture aux données encapsulées dans la vue, par la vue.
L'intérêt des templates c'est aussi de supprimer certaines opérations sur les formulaire : genre remplir des champs, formatage automatique, générer des éléments de formulaire, de façon très simple sans avoir à faire

Code :
1
2
3
<input type="radio" name="radio" id="radio_1" value="2" <?php 
if ($this->radio_1 == 2) { echo " checked " } 
?>  />
Zefling est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2012, 17h46   #29
wamania
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 683
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 683
Points : 1 034
Points : 1 034
Citation:
L'intérêt des templates c'est aussi de supprimer certaines opérations sur les formulaire : genre remplir des champs, formatage automatique, générer des éléments de formulaire, de façon très simple sans avoir à faire
Donc évidemment, chacun sa manière de faire, mais pour moi, ça représente tout ce que je déteste.
Pour moi, un formulaire c'est simple à gérer, et écrire ce que tu écris ne prend pas moins de temps que l'équivalent php pour le générer.
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2012, 18h48   #30
pierrehs
Invité régulier
 
Inscription : juillet 2010
Messages : 34
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 34
Points : 5
Points : 5
J'utilise (très) souvent Smarty 2, souvent XSLT que j'aime particulièrement mais qui reste assez verbeux.
Sinon pour des petits sites, je trouve que la syntaxe alternative de PHP est toujours très bien
pierrehs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2012, 19h28   #31
Gugelhupf
Membre éclairé
 
Homme
Développeur informatique
Inscription : décembre 2011
Messages : 237
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2011
Messages : 237
Points : 334
Points : 334
Laquelle de ces techniques utilisez-vous et pourquoi ?
Il fut un temps où j'utilisais du PHP + HTML lorsque je développais sans framework (la méthode echo est à bannir).
Depuis que j'utilise le framework Symfony2 je suis passé aux templates.

Utilisez-vous un moteur template et lequel ?
Oui j'utilise le template Twig qui est inclus dans Symfony2.
Gugelhupf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2012, 22h31   #32
Jarodd
Membre confirmé
 
Avatar de Jarodd
 
Inscription : août 2005
Messages : 348
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 348
Points : 282
Points : 282
PHP + HTML pour moi. En général, c'est ce qui me convient le mieux sur les projets avec plusieurs intervenants, l'intégrateur n'est pas paumé quand il lit du code PHP.

Je n'aime pas les moteurs de template, chacun a sa propre syntaxe, je passe plus de temps sur la doc pour me rappeler comment écrire telle ou telle fonction qu'à écrire mon code.
Jarodd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2012, 00h15   #33
dseed
Invité régulier
 
Inscription : septembre 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 31
Points : 9
Points : 9
Par défaut SEPARER votre code !!!

Non mais sérieux faut arrêter définitivement de mélanger du php et de l'html dans le mm fichier, utiliser autre chose mais il y a rien de pire à maintenir que du code mélangé !!

Donc pour moi SEPARATION et quelque soit le langage !!
Et ça devrait être pareil pour tout le monde ;-)
dseed est déconnecté   Envoyer un message privé Réponse avec citation 13
Vieux 27/10/2012, 00h25   #34
nesswaw
Nouveau Membre du Club
 
Inscription : juillet 2007
Messages : 142
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 142
Points : 27
Points : 27
Bonjour,

J'utilise jTpl, livré avec le framework Jelix (jelix.org)

Vraiment très simple d'utilisation et très léger et une syntaxe quasi PHP:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<html>
<head>
 
</head>
 
<body>
    Bonjour {$prenom}
 
    <ul>
    {foreach $liste as $item}
        <li>{$item->nom.' '.$item->prenom}</li>
    {/foreach}
    </ul>
</body>
</html>
jTpl est aussi disponible en version standalone (version qui fonctionne sans le framework), aller faire un tour sur le site => jelix.org
nesswaw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2012, 08h24   #35
RunCodePhp
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 965
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 965
Points : 3 671
Points : 3 671
Salut

J'ai voté "mélange de Php et Html" malgré avoir utilisé des moteurs de template comme Smarty2 et Twig.
Ceci dit je ne suis pas un adepte des moteurs de templates bien que je les trouvent fort intéressant, j'ai plutôt rejoins à la longue l'idée que Php est lui même un moteur de template.

Le sondage est intéressant, mais pour ma part le plus important c'est l'art et la manière d'exploiter telle ou telle solution.
Le principal c'est de faire un projet bien conçu, facile à maintenir dans le temps, tout le reste c'est de la masturbation intellectuelle (j'aime bien cette petite expression )


Même en se narguant d'utiliser un moteur de template (car soit disant il y aurait obligation de séparer les couches Php/Html), je ne suis pas convaincu que tous le font avec la manière.


Un exemple concret de code (simplifié) effectué par des pros avec un moteur de template (Smarty2) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{include file="$tpl_dir./breadcrumb.tpl"}
 
<h1>{l s='The Title'}</h1>
 
{include file="$tpl_dir./errors.tpl"}
 
{if isset($empty)}
<p class="warning">{l s='Is empty.'}</p>
{else}
<script type="text/javascript">
// <![CDATA[
<p>{l s='Bla bla bla.'}</p>
// ]]>
</script>
{/if}
<div>
etc etc etc ...
</div>
Je ne sais pas ce que vous en pensez, mais quand je vois ce genre de code (effectué par des pros je rappel) ça me fais mal au coeur, mais franchement.
Et encore, je n'ai mis que quelques toutes petites lignes histoire de faire court, il y a encore 100 fois pire, du code que je je considère imbuvable.

Inclure une vue dans une vue ?
Le faire 1 fois, passe encore, mais le généraliser dans un projet ça le rendra difficilement maintenable (voir pas du tout).
Mettre du code JS en plein corps HTML rend là encore un projet difficile à maintenir.
Etc, etc, ... j'en passe et des meilleurs.


Pour ma part, utiliser un moteur de template d'accord, tant que l'art et la manière y est.
Le gros piège à mon sens, c'est que ces moteurs de template sont souvent très évolués et permettent de faire un peu tout et n'importe quoi (tout comme Php d'ailleurs).

Donc si on utilise un moteur de template pour palier à un gros manque de conception/logique au sein du projet et déboucher sur du code tout aussi tordu et non maintenable, et bien très peu pour moi.


Bis et repetita : mélange de Php et Html, sans pour autant dénigrer que Twig et franchement pas mal.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2012, 10h13   #36
hakurou
Membre régulier
 
Développeur Web
Inscription : décembre 2006
Messages : 102
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 102
Points : 84
Points : 84
Envoyer un message via MSN à hakurou
En mvc sans moteur de template pour mes projets persos, un peu comme dans le commentaire de wamania:
depuis mon controleur j'assigne mes variables $this->_view->assign('key', 'value'); et dans ma vue echo $this->get('key); et le rendu final est effectué via la méthode render() du controleur qui appel celui de la vue avec de l'ob_start derrière.

Sinon au boulot on utilise Smarty, avec lequel je l'avoue, dans les mains de devs qui ne cherchent pas à apprendre ça peut donner des horreurs au lieu de simplifier les vues, je me dis que ça aurait été pire s'ils travaillaient sans moteur de template...
hakurou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2012, 11h56   #37
younes0
Candidat au titre de Membre du Club
 
Homme
Inscription : mars 2012
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mars 2012
Messages : 6
Points : 11
Points : 11
- Pas de système de template

- Jamais de mélange Javascript/PHP (hormis quelques variables globales)

- Une fonction globale Gettext pour tous les textes : __('traduit'), ce qui permet de modifier les textes en français ou de les traduire par le client à l'aide d'un logiciel simple à utiliser

- Pour mes helpers:
Code :
1
2
3
4
5
6
7
8
9
 
public static function notification($title = null, $message = null, $action = null)
{
	$out = '<h3>'.$title.'</h3>'.$message;
	if ($action) {
		$out.= '<a href='.$action['url'].'>'.$action['label'].'</a>';
	}
	return $out;
}
- Pour mes vues (.phtml), mélange PHP / HTML
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php if ($profiles ) : foreach ($profiles as $profile) : ?>
	<div>
		<h3><?= e($profile->name) ?></h3>
		<p>
			<i class="icon-calendar"></i>
			<?= __('%d ans',  hUtils::get_age($profile->birthdate)) ?><br>
			<i class="icon-globe"></i>
			<?= hUtils::item_text($profile->city, $items['city']) ?>
		</p>
	</div>
<?php endforeach; else: ?>
	<div>
		<h2><?= __('Aucun contact') ?></h2>
	</div>
<?php endif; ?>

Citation:
Envoyé par Zefling Voir le message
Je fais avec mon propre moteur de template en PHP, très simple sans de code complexe pour éviter d'en faire un langage avec une 20aine de balises spécifique à mes besoins... C'est un peu à ma manière.

L'intérêt des templates c'est aussi de supprimer certaines opérations sur les formulaire : genre remplir des champs, formatage automatique, générer des éléments de formulaire, de façon très simple sans avoir à faire
Tu confonds système de templates et Helpers je crois.
younes0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2012, 14h39   #38
manzeki
Membre du Club
 
Fabrice Manzeki
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 36
Détails du profil
Informations personnelles :
Nom : Fabrice Manzeki
Localisation : Canada

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : mai 2008
Messages : 36
Points : 49
Points : 49
Par défaut Architecture

J'ai au départ utilisé le moteur de template Smarty, mais son concept de variables n'est pas élégant.

Pourquoi ont-ils réinventer la roue :
{$toto} en lieu et place de <?php echo $toto ?> ?

Depuis plusieurs années, j'ai adopté le model MVC avec les frameworks cakephp et symphony. L'usage des vues est très puissant.
manzeki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2012, 17h36   #39
camus3
Membre émérite
 
Inscription : juillet 2010
Messages : 603
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 603
Points : 902
Points : 902
Citation:
Non mais sérieux faut arrêter définitivement de mélanger du php et de l'html dans le mm fichier, utiliser autre chose mais il y a rien de pire à maintenir que du code mélangé !!

Donc pour moi SEPARATION et quelque soit le langage !!
Et ça devrait être pareil pour tout le monde ;-)
SEPARATION ne veut pas dire ne pas utiliser php dans un templates, puisque PHP a été créer pour générer facilement du html à la base, vu que c'était trop chiant à faire en perl ou en c/c++. PHP est donc lui même un moteur de templates ! qui s'est transformé en langage à part entière.
Sinon pourquoi as-ton besoin d'utiliser une balise avant de coder en PHP ?
les directives require ou include démontre totalement ce fait.

ce n'est pas le cas des autres langages ou il est plus compliqué d'inclure un fichier adhoc.

Alors pourquoi utiliser Twig ou Smarty ? la raison principale est que ce ne sont pas juste des moteurs de templates. Il offrent en plus des outils de debugging qui facilitent le développement, ainsi qu'une manière facile d'implémenter un héritage entre templates, un cache , et des fonctions usuelles. Enfin une vue doit être readonly , c'est à dire qu'elle peut lire les valeurs , afficher la réponse d'un autre contrôleur ,mais ne pas modifier le model de l'application.

Ces moteurs facilitent donc le développement mais ne sont en aucun cas indispensable à php puisque encore une fois , c'est déja un moteur de templates à la base.

Avec twig on peut :

- faire du push/pull
- étendre une vue de base
- créer des vues réutilisables et "self-contained"
- profiter d'un nombre important de fonctions courantes, (pair/impair, filtres , ... )
- appliquer une stratégie de sécurité par défaut ( autoescape pour réduire les opportunités d'attaques XSS , etc ... )
camus3 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/10/2012, 18h13   #40
Zefling
Membre confirmé
 
Avatar de Zefling
 
Développeur Web
Inscription : avril 2007
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2007
Messages : 101
Points : 278
Points : 278
Citation:
Envoyé par younes0 Voir le message
Tu confonds système de templates et Helpers je crois.
J'appends quelque chose, les balises <form: xxx /> comme on en trouve en JSP sont des helpers ?


Perso, j'ai juste cherché à détacher le plus mon HTML du code, si j'ai une modification à faire, je n'ai pas tous les templètes à revoir : bref pour moi c'est zéro JS et zéro PHP dans mes templètes. Au départ, je ne suis pas parti dans cette optique-là, mais c'est à force de faire de la mise en forme que j'en suis venu à faire ce découpage avec l'idée de n'avoir aucun plantage possible quand je les modifie. Ensuite, je pense qu'avoir travaillé 2 ans avec Spring a dû un peu m’influencer sur certaines balises.
Zefling est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h28.


 
 
 
 
Partenaires

Hébergement Web