Débuter avec brindille

Utilisation de base de l’API

Il peut également être installé en téléchargeant le code source et en le plaçant dans un répertoire de votre projet. Cependant, l’utilisation de composer présente de nombreux avantages.

require '/path/to/lib/Twig/Autoloader.php';
Twig_Autoloader::register();

$loader = new Twig_Loader_Filesystem('/path/to/templates');

$options = array(
    'strict_variables' => false,
    'debug' => false,
    'cache'=> false
);

$twig = new Twig_Environment($loader, $options);

Lors de la création d’une nouvelle instance Twig_Environment, vous pouvez passer un tableau d’options comme deuxième argument du constructeur. Voici une liste des options disponibles :

  • débogage (booléen, par défaut false)

Lorsqu’il est défini sur true, les modèles générés ont une méthode __toString() que vous pouvez utiliser pour afficher les nœuds générés.

  • jeu de caractères (chaîne, par défaut utf-8)

Le jeu de caractères utilisé par les modèles.

  • base_template_class (string, Twig_Template par défaut)

La classe de modèle de base à utiliser pour les modèles générés.

  • cache (chaîne ou false, par défaut false)

Un chemin absolu où stocker les templates compilés, ou false pour désactiver la mise en cache (qui est la valeur par défaut).

  • auto_reload (booléen, par défaut hérité de debug)

Lors du développement avec Twig, il est utile de recompiler le template chaque fois que le code source change. Si vous ne fournissez pas de valeur pour option auto_reload, elle sera déterminée automatiquement en fonction du valeur de débogage.

  • variables_strictes (booléen, par défaut false)

Si défini sur false, Twig ignorera silencieusement les variables invalides (variables et/ou attributs/méthodes qui n’existent pas) et remplacera les avec une valeur nulle. Lorsqu’il est défini sur true, Twig lève une exception à la place.

  • autoescape (chaîne ou booléen, par défaut “true”)

Si défini sur true, l’échappement automatique HTML sera activé par défaut pour tous les modèles.

Depuis Twig 1.8, vous pouvez définir la stratégie d’échappement à utiliser (html, js, false pour désactiver).

Depuis Twig 1.9, vous pouvez définir la stratégie d’échappement à utiliser (css, url, html_attr ou un rappel PHP qui prend le modèle “filename” et doit renvoyer la stratégie d’échappement à utiliser – le rappel ne peut pas être un nom de fonction pour éviter les collisions avec les stratégies d’échappement intégrées).

Depuis Twig 1.17, la stratégie d’échappement du nom de fichier détermine la stratégie d’échappement à utiliser pour un modèle en fonction du nom de fichier du modèle extension (cette stratégie n’entraîne aucun surcoût lors de l’exécution, car l’échappement automatique est effectué au moment de la compilation.)

  • optimisations (entier, par défaut -1)

Un drapeau qui indique les optimisations à appliquer :
définir sur -1 pour activer toutes les optimisations
set o 0 to disable all optimalitazations

[Guide d’installation officiel de Twig] [1]

Une extension PHP Twig (écrite en C) peut également être compilée et installée, et le package PHP en tirera automatiquement parti pour optimiser certaines routines courantes.

[1] : http://twig.sensiolabs.org/doc/installation.html

Qu’est-ce que Brindille ?

Twig est un langage de template qui se compile en code PHP optimisé. Il est principalement utilisé pour générer du HTML, mais peut également être utilisé pour générer tout autre format basé sur du texte. C’est un composant autonome qui peut être facilement intégré dans n’importe quel projet PHP.

Il offre de nombreuses fonctionnalités excellentes :

  • Autoescaping pour HTML (aide à empêcher XSS)
  • Syntaxe conçue avec des modèles à l’esprit (basée sur des modèles Django)
  • Héritage des templates
  • Macros

[Documentation officielle sur les modèles de brindilles] [1]

Exemple de syntaxe de Twig :

{% extends "base.html" %}

{% block sidebar %}
  {{ parent() }}
  <span>Sidebar content specific to this page</span>
{% endblock sidebar %}

{% block body %}
  <p>Select an item:</p>
  <ul>
    {% for item in list %}
      <li><a href="/items/{{ item.id }}">{{ item.name }}</a>
    {% else %}
      <li>No items yet.
    {% endfor %}
  </ul>
{% endblock body %}

[1] : http://twig.sensiolabs.org/doc/templates.html

Introduction

Si vous avez été exposé à d’autres langages de modèles textuels, tels que [Smarty][1], [Django][2] ou [Jinja][3], vous devriez vous sentir comme chez vous avec [Twig][4]. . Il est à la fois convivial pour les concepteurs et les développeurs *** en respectant les principes de PHP et en ajoutant des fonctionnalités utiles pour les environnements de modèles.

Les fonctionnalités clés sont…

  • Rapide : [Twig][4] compile les modèles en code PHP optimisé. La surcharge par rapport au code PHP normal a été réduite au minimum le minimum.

  • Sécurisé : [Twig][4] dispose d’un mode bac à sable pour évaluer les modèles non approuvés code. Cela permet à Twig d’être utilisé comme langage de modèle pour applications où les utilisateurs peuvent modifier la conception du modèle.

  • Flexible : [Twig][4] est alimenté par un lexer et un analyseur flexibles. Cette permet au développeur de définir ses propres balises personnalisées et filtres, et pour créer leur propre DSL.

Twig est utilisé par de nombreux projets Open-Source comme [Symfony][5], [Drupal][6], [eZPublish][7] et de nombreux frameworks le supportent également comme [Slim][8], [Yii] [9], [Laravel][10], [Codeigniter][11],[silex][12] et [Kohana][13] — pour n’en nommer que quelques-uns.

Installation

La méthode recommandée pour installer Twig est via [Composer][14] :

Pour les utilisateurs de php 5.x

composer require "twig/twig:~1.0"

Pour les utilisateurs de php 7.x

composer require "twig/twig:~2.0"

[1] : http://www.smarty.net/ [2] : https://www.djangoproject.com/ [3] : http://jinja.pocoo.org/ [4] : http://twig.sensiolabs.org [5] : https://symfony.com/ [6] : https://www.drupal.org [7] : https://ez.no/ [8] : https://www.slimframework.com [9] : http://www.yiiframework.com [10] : https://laravel.com/ [11] : http://codeigniter.com/ [12] : http://silex.sensiolabs.org [13] : https://kohanaframework.org/ [14] : https://getcomposer.org/