Premier pas avec le microframework Silex

logo_silex
Silex est un microframework développé par SensioLabs. Contrairement à Symfony qui est un framework ful-stack (structure imposée…), Silex est très minimaliste quant à sa configuration et à son utilisation. Silex peut utiliser les mêmes composants que Symfony ainsi que la librairie Pimple qui est un conteneur pour les injections de dépendances.

Installation de Silex

Dans votre fichier composer.json, ajoutez cette ligne dans le require :

"silex/silex": "~2.0"

Puis lancez en ligne de commande :

composer install

Une fois l’installation effectuée, en allant dans /vendor/symfony, vous verrez que Silex utilise de base les composants de Symfony, l’EventDispatcher, HttpKernel, HttpFoundation, Routing.

Architecture des dossiers :

Comme vous l’aurez remarqué, l’application ne possède à ce stade que le dossier vendor avec les composants de base Symfony, Pimple et bien sûr Silex.

Comme expliqué plus haut, vous avez une totale liberté pour l’organisation de vos dossiers mais rien ne vous empêche bien évidemment de partir sur une architecture Symfony, ce que nous allons faire d’ailleurs :

Notre architecture sera donc la suivante :

app : stockera nos futures configurations

web : images, css, js htaccess, index.php

src : stockera le code de notre application

Pour notre 1er exemple simple qui affichera un simple Hello au prénom passé en paramètre, nous allons créer notre fichier index.php qui contiendra le code suivant :

<?php

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$app->get('/hello/{nom}', function ($nom) {

    return 'Hello world';

});

$app->run();

?>

Je vous avais bien dit qu’il s’agissait de peu de code pour lancer notre 1ere Hello Prenom.

Expliquons un peu le code :

require_once __DIR__.'/../vendor/autoload.php' : ce fichier a été automatiquement généré par Composer qui permettra par la suite d’utiliser le code qui se trouve dans /vendor

new Silex\Application() : je vous encourage vivement à aller jeter un œil sur le code que contient ce fichier.

Comme expliqué plus haut, ce fichier appelle nos différents composants nécessaires pour lancer notre application.

$app->get('/hello/{nom}', function ($nom) {

return « Hello $nom»;

}) :nous venons de définir notre 1ere route avec le code à exécuter quand nous appellerons /hello/Marc

Vous aurez sans doute remarqué  l’utilisation d’un closure pour la définition du code à exécuter quand nous demanderons /hello/Marc

Pour plus d’info sur les closures, je vous invite à aller sur un précédent article : https://blog.netapsys.fr/les-closures-en-php-partie-1/ pour plus d'informations.

Il s’agit d’une simple définition de route, nous verrons plus tard dans mon prochain article ( allez plus loin avec Silex) une autre façon de définir et configurer nos routes lorsque nous découperons notre code afin de n’avoir pas tout dans un même fichier, ce n’est pas le but.

$app->run() : permet de lancer l’application

Les fournisseurs de service (Service Provider)

Comme évoqué, Silex utilise certains composants de symfony mais pas seulement ceux imposés.

Nous allons voir ensemble l’installation et l’utilisation du bundle Twig pour la génération de nos vues.

Rajoutez dans notre fichier composer.json dans la section require :

"twig/twig"  : "~1.23"

puis lancez

composer update

Un dossier twig vient d’être ajouté à notre dossier /vendor (vous l'avez compris, ce dossier stocke tout le code tiers) et qu’on ne doit en aucun cas toucher au code car le code sera écrasé en cas de mise à jour de version.

Pour pouvoir utiliser ce nouveau bundle, on va donc utiliser ce qu’on appelle les fournisseurs de service. Ce fichier nous permettre de loader et d’utiliser en l’enregistrant dans notre application grâce à la fonction register qui est très importante.

Silex a bien fait les choses en nous mettant à disposition plusieurs fournisseurs de services qui sont pas mal utilisés dans les applications tels que twig, UrlGenerator, Session, Swiftmailer…

Pour avoir la liste complète des fournisseurs disponibles, je vous invite à aller voir le dossier /vendor/silex/silex/src/Silex/Provider.

Voyons maintenant comment l’utiliser :

Retournons dans notre fichier index.php en rajoutant après l’instanciation de \Silex\Application :

$app->register(new Silex\Provider\TwigServiceProvider(), array(

'twig.path' => dirname(__DIR__) . "/CHEMIN_HTML",

));

Il nous a juste suffit d’enregistrer une instance de notre provider dans notre application. Silex a bien fait les choses pour nous simplifier la vie.

Félicitations ! Vous venez de faire vos premiers pas avec le microframework, mon prochain article abordera plus en profondeur les fortes possibilités qu'offrent Silex.

Enregistrer

Enregistrer

Enregistrer

Enregistrer

Enregistrer

Un commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *