09
JAN

Plates: Le moteur de templates PHP natif non compilé

Publié le 09/01/14 à 09h03 par DJo

Plates est un moteur de templates PHP inspiré par la philosophie de Twig mais en PHP natif, non compilé.

Plates est un moteur de templates PHP inspiré par la philosophie de Twig mais en PHP natif, non compilé.

Si vous utilisez Symfony2, vous connaissez forcément Twig ! Plates est un moteur de templates PHP qui s'inspire du meilleur de Twig et essaye d'apporter des fonctionnalités et architecture moderne dans un système de templates PHP natif.

En effet, contrairement à Smarty ou Twig, Plates utilise la syntaxe PHP native pour coder les templates.

On retrouve une architecture avec de l'héritage de templates et des layouts. 

Tous les templates sont namespacés à l'aide de leurs répertoires, et suffisamment bien découpés pour qu'ils puissent être testés unitairement.

Voici un exemple d'utilisation côté contrôleur:

<?php
// Create a new template
$template = new LeaguePlatesTemplate($engine);
// Assign a variable to the template
$template->name = 'Jonathan';
// Render the template
echo $template->render('home');
// Render a folder template
$email = $template->render('emails::welcome');

On retrouve le même système de layout / blocks que dans Twig, exemple de layout:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title><?=$this->title?></title>
</head>
<body>
<div id="content">
    <?=$this->content?>
</div>
<?php if (isset($this->sidebar)): ?>
    <div id="sidebar">
        <?=$this->sidebar?>
    </div>
<?php endif ?>
</body>
</html>

Et voici comment développer un template qui viendra utiliser notre layout:

<?php $this->layout('template') ?>
<?php $this->title = 'User Profile' ?>
<?php $this->start('content') ?>
    <h1>Welcome!</h1>
    <p>Hello <?=$this->e($this->name)?></p>
<?php $this->end() ?>
<?php $this->start('sidebar') ?>
    <ul>
        <li><a href="/link">Example Link</a></li>
        <li><a href="/link">Example Link</a></li>
        <li><a href="/link">Example Link</a></li>
        <li><a href="/link">Example Link</a></li>
        <li><a href="/link">Example Link</a></li>
    </ul>
<?php $this->end() ?>

En gros, Plates propose une alternative à Twig pour ceux qui préfèrent développer en PHP natif plutôt que d'utiliser une syntaxe de template spécifique.

Qu'en pensez-vous ?

 

Site Officiel

Baraguiné par Helios le 09/01/14 à 10h45
Helios sur La Ferme du Web
De mon avis, le seul avantage d'avoir un moteur en PHP natif va être de pouvoir utiliser facilement les fonctions natives, ses propres méthodes de formatage, calcul et autre sans avoir à passer par le développement d'une extension (si on compare à Twig).

D'un point vue performance, de nombreux benchmark ont démontré que Twig a un impact très faible donc de ce côté pas de réel avantage.

D'un point de vue professionnel et toujours à mon sens, il est tout de même plus intéressant de passer un peu de temps à se plonger dans Twig, qui est facilement intégrable dans toute sorte de projet et quasiment incontournable dans tout projet Symfony2. En plus la syntaxe Twig est prise en charge dans de nombreux éditeurs de texte à présent.
Baraguiné par Nicolab_net le 09/01/14 à 13h34
Nicolab_net via Twitter
Perso je fait mes vues en PHP (Twig-PHP, Blade-PHP ou autre) mais j'évite de me retrouver avec du pseudo code
Baraguiné par younes0 le 09/01/14 à 13h59
younes0 sur La Ferme du Web
1 Nicolab

Blade s'inspire de Razor (MVC .NET) et permet d'intégrer du PHP natif

@foreach ($users as $user)
{{$user->name}}
{{ViewUtils::badge($user)}}
@endforeach

Coté performances, les vues sont cachées, mais ceci n'a pas d'importance franchement... sauf si vous avez beaucoup de trafic, là vous utilisez Varnish ou investissez en serveurs.
Baraguiné par canu_mickael le 09/01/14 à 22h24
canu_mickael via Twitter
Merci. Ce type d'outil et intéressant mais comme @Helios, je pense qu'il est plus utile de bosser twig ...

Ajouter un Commentaire

Pour poster un commentaire, vous devez être identifié. Vous pouvez choisir parmi ces trois méthodes d'identification:

Compte la Ferme du Web

Identifiez-vous
Inscrivez-vous

Compte Facebook

Connexion avec Facebook

Compte Twitter

Connexion avec votre compte twitter
Rechercher sur la Ferme du web