Silex et Twig - Introduction
![]()
Voici un premier post où je fais la promo des technos qui donnent vie à ce blog.
Twig et Silex sont tous deux des outils développés par Sensio Labs.
Silex
Silex est un framework web et c'est la base de ce blog. C'est lui qui rend le site dynamique et qui aiguille telle ou telle URL vers telle ou telle action. Par "action", comprenez "un bout de code qui peut faire plein de choses, comme récupérer des données à l'endroit ou aux endroits que vous voulez, pour finalement générer du contenu, que ce soit du HTML ou ce que vous voulez comme autre espèce de ressource". Il est d'usage de dire que c'est un micro-framework, car c'est vrai qu'il est très léger. Mais sa légèreté lui donne l'avantage d'être extrêmement simple à utiliser. En effet, son utilisation est similaire à celle de Sinatra en Ruby ou encore de Express dans le monde de NodeJS (d'ailleurs Express est lui-même inspiré de Sinatra). Silex a également l'avantage de reposer sur des composants qui forment aussi la base de Symfony 2. De ce fait, Silex est donc soutenu par une vaste communauté de développeurs enthousiastes.
Il n'a cependant pas la vocation d'évoluer au point d'être une alternative à Symfony 2 (et d'ailleurs ce serait idiot puisque Symfony est aussi un produit de Sensio Labs). C'est un micro-framework qui restera "micro", et pour qu'il arrive à vous offrir toutes les possibilités mises à disposition par Symfony 2 (ou un autre gros framework web PHP), vous avez donc 2 solutions : soit vous faites évoluer Silex à votre sauce, soit vous utilisez carrément Symfony 2 :p .
Twig
Twig est un moteur de template. Silex ne l'intègre pas proprement dit, contrairement à Symfony 2. Comme je l'ai déjà dit, Silex est léger et si vous voulez utiliser un autre moteur de template que Twig à travers Silex (Smarty par exemple), libre à vous de le faire puisque c'est tout à fait faisable. Cependant Silex dispose nativement d'un adaptateur pour intégrer simplement Twig. En général, c'est donc le moteur de template qui s'associe naturellement à Silex.
Twig s'inspire de la syntaxe des templates de Django (célèbre framework web Python ressemblant étrangement dans l'esprit à Symfony 1... le monde est petit, mais là je m'égare). Il intègre nativement quelques fonctions de base, des filtres, appelables directement dans les templates bien sûr.
Il devient également très aisé de définir des layouts, d'étendre des layouts, de surcharger des blocks... bref je vous laisse lire la documentation là dessus. C'est très très complet.
Sachez également qu'il est facilement extensible si jamais vous vouliez vous créer vos propres fonctions ou filtres.
Il offre également la possibilité d'activer un cache. Malheureusement ce cache semble peu paramétrable (dites-moi si je me trompe !).
En définitive, Silex est un projet moyennement structurant, à mi-chemin entre la négligence absolue du respect des règles de codage et des principe de séparation code/présentation d'un côté et un vrai gros framework style Zend Framework ou Symfony 2 d'un autre côté : Silex est un micro-framework dans le sens ou il est structurant uniquement dans l'écriture du contrôleur du modèle MVC , alors que Symfony 2 permet une structuration du code dans les 3 parties du modèle MVC.
Pour finir, je dirais qu'à mon sens le couple Silex/Twig est probablement le meilleur choix en PHP si l'on ne veut pas s'embarquer dans la conquête d'un monument comme Symfony 2. C'est également un excellent choix si auparavant, on codait n'importe comment, et que maintenant, on a envie de structurer un minimum son code. Ca peut aussi être un bon choix en PHP si notre projet est modeste et ne nécessite pas une grande finesse, une excellence dans la structuration du code (ce qui ne veut pas dire qu'il n'est possible de structurer précisément un projet basé sur Silex ^^).
