Pages :
(reprise du message précédent)

kustolovic a écrit :
L'avantage principal, est de sandboxer le php. Pour d'une part forcer à faire des templates propres, et qui empêche d'accéder à certaines couches du logiciel. Le but est bien entendu de limiter les possibilités du php, ce qui n'est un aucun cas une facilité ou une aide.

Intéressant...
N'étant pas un pro PHP, pourrais-tu me préciser l'aspect "limiter les possibilités du PHP". Ce point est en effet un poil obscur pour moi.
Merci d'avance.
Modifié par sepecat (27 Aug 2016 - 09:05)
Modérateur
php est un language de template quia beaucoup évolué et permet donc d'être un langage serveur complet. Au milieu du template il est donc, en théorie, possible d'effectuer des requêtes SQL, d'écrire dans le système de fichier et d’appeler les fonctions / méthodes de notre application.

Utiliser un autre moteur de template dans le template empêchera d'avoir accès aux fonctions/méthodes de l'application autres que celles explicitement fournies et empêchera d'utiliser les fonctions/méthodes natives de php (entre 8000 et 12000 selon les extensions)

Dans un workflow pro, les devs du cœur n'auront ainsi pas à s'attarder à faire des revue de code des équipes du front (et vice-versa), et ces derniers lorsqu'ils ont besoin d'une fonctionnalité, en feront une demande formelle plutôt que la coder eux-même à l’arrache dans le template.
Modifié par kustolovic (26 Aug 2016 - 15:36)
Oui, voilà. Il faut voir le moteur de template comme un langage minimaliste utilisé afin de restreindre la logique. Parce qu'au final, on a besoin de quoi pour gérer les vues ? Des boucles, des conditions, de la récupération de certaines variables et basta. On ne va pas effectuer un gros calcul en plein milieu ou mettre à jour la base de données.

Ce que je reproche à PHP, ce sont ces satanées balises pour afficher une variable.

<?php echo $myVar;?>

ou même, soyons fous :
<?= $myVar;?>

Et quand il s'agit d'appliquer un filtre sur cette variable, ça devient tout de suite un bazar monstre :
<?php echo strtolower(htmlentities($myVar));?>

Et si ma variable n'existe pas/est vide ? Il faut la tester, sinon c'est du warning à gogo.
<?php echo isset($myVar) && !empty($myVar) ? strtolower(htmlentities($myVar)) : '';?>

Au lieu de ça, avec un moteur de template, on définie la valeur de 'myVar' et puis :
{{myVar | strolower}}

Et pouf, on est tranquille. Smiley lol
Laegel a écrit :
Oui, voilà. Il faut voir le moteur de template comme un langage minimaliste utilisé afin de restreindre la logique. Parce qu'au final, on a besoin de quoi pour gérer les vues ? Des boucles, des conditions, de la récupération de certaines variables et basta. On ne va pas effectuer un gros calcul en plein milieu ou mettre à jour la base de données.

Ce que je reproche à PHP, ce sont ces satanées balises pour afficher une variable.

&lt;?php echo $myVar;?&gt;

ou même, soyons fous :
&lt;?= $myVar;?&gt;

Et quand il s'agit d'appliquer un filtre sur cette variable, ça devient tout de suite un bazar monstre :
&lt;?php echo strtolower(htmlentities($myVar));?&gt;

Et si ma variable n'existe pas/est vide ? Il faut la tester, sinon c'est du warning à gogo.
&lt;?php echo isset($myVar) &amp;&amp; !empty($myVar) ? strtolower(htmlentities($myVar)) : '';?&gt;

Au lieu de ça, avec un moteur de template, on définie la valeur de 'myVar' et puis :
{{myVar | strolower}}

Et pouf, on est tranquille. Smiley lol

C'est un point sur lequel je trouve Java mieux intégré que PHP, car le langage offre la possibilité de créer des JSP, de façon identique à ce qu'on ferait sous PHP et pouvant donner un source aussi imbuvable, ou bien de sérialiser le flux HTML construit ex nihilo via une servlet.
Personnellement, et pour la raison évoquée ci-dessus, je n'utilise jamais de JSP, préférant de loin avoir la maîtrise totale de mon balisage au travers d'une servlet.
De toute façon, une JSP est une servlet qui s'ignore... puisque le premier travail d'un serveur web qui la reçoit est, justement, d'en parser le contenu et de créer la servlet correspondante qui prendra en charge la génération effective de la page HTML.
En ce sens, on peut grossièrement considérer la servlet comme une forme de "templating", puisqu'elle dispose de tout l'environnement de Java niveau variables, instructions de branchement, connexions SQL, etc.
Le générateur HTML sur lequel je travaille en ce moment ne se limitera pas au fait d créer des sites web statiques puisqu'il disposera également de modules permettant de générer la version Servlet, JSP, ASP ou PHP du même site. Une façon de répondre à un besoin d'entreprises dans lesquelles PHP n'est pas, à ma connaissance, le langage dominant.
Pour avoir parcouru le code de certaines JSP, c'est effectivement aussi inextricable que leur alter ego en PHP truffé de IF, boucles et autres joyeusetés...
Pages :