Avec Razor (Asp.Net MVC)
Avec Razor (Asp.Net MVC)
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é ?
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.
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...
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...
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.
index.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
template.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $view = new View; echo $view->render('template.php', array('title' => 'Ma page'));
Simplifié pour l'exemple, mais complet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7<html> <head> <title><?=$this->title;?></title> </head> <body> </body> </html>
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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <input type="radio" name="radio" id="radio_1" value="2" <?php if ($this->radio_1 == 2) { echo " checked " } ?> />
Donc évidemment, chacun sa manière de faire, mais pour moi, ça représente tout ce que je déteste.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
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
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
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.
N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java
Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI
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.
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 ;-)
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:
jTpl est aussi disponible en version standalone (version qui fonctionne sans le framework), aller faire un tour sur le site => jelix.org
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
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) :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
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]
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...
- 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:
- Pour mes vues (.phtml), mélange PHP / HTML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; ?>
Tu confonds système de templates et Helpers je crois.
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.
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.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 ;-)
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 ... )
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager