H2 - P2019

Développement web

Cours 34 - 2016-05-23

Silex

http://silex.sensiolabs.org

Logo silex

  • Silex est un "micro-framework" PHP
  • Développé par SensioLabs
  • Repose sur certains composants du Framework Symfony 2
  • Beaucoup moins complexe et lourd, mais très performant
  • Courbe d'apprentissage élevée
  • Nécessite au minimum PHP 5.3 (idéalement 5.4)

Nous allons créer un site d'actualité contenant des pages classiques (home, catégorie, article, contact, about)

Créer le projet et importer Silex

Télécharger Silex

Composer

  • Les fichiers composer.json et composer.lock sont utilisés par le gestionnaire de dépendances Composer
  • Il permet de facilement télécharger et mettre à jour les librairies en gérant les dépendances
  • Nous ne l'utiliserons pas dans ce cours
  • Le dossier vendor contient Silex ainsi que d'autres composants que nous verrons plus tard
  • Le dossier web contiendra notre site

.HTACCESS

  • Silex permet de gérer très facilement l'URL rewriting
  • Mais pour fonctionner correctement, nous devons rajouter un .htaccess afin de faire pointer toutes les requêtes dans web/index.php

.HTACCESS

  • Créez le fichier .htaccess dans le dossier web/
  • Ajoutez-y le code suivant (tiré de la documentation Silex)
    
    Options -MultiViews
    
    RewriteEngine On
    RewriteBase /path/to/app
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
                                
  • Remplacez /path/to/app par le chemin vers votre site
    Exemple : Si votre chemin est http://localhost/blog/web/, indiquez /blog/web

Tester

Dans web/index.php

Autoload


require_once __DIR__.'/../vendor/autoload.php';
                    
  • Ce code va include un script php appelé autoload
  • L'autoload permet de charger directement les script sans avoir à faire d'include

Instanciation de Silex


$app = new Silex\Application();
                    
  • Ce code va instancier Silex
  • Nous allons utiliser la variable $app plusieurs fois par la suite
  • Il s'agit du cœur de notre site (ou application)
  • La syntaxe Silex\ correspond au namespace. Cela permet d'organiser ses fonctions et classes comme si elle étaient dans des dossiers pour éviter les conflits (Tuto)

Première route


$app->get('/hello', function () {
    return 'Hello!';
});
                    
  • Ce code va demander à Silex de créer une route accessible en tapant hello dans l'URL
  • Elle va simplement renvoyer Hello!
  • Évidemment, nous allons avoir besoin de récupérer du HTML d'ici peu

Exécuter


$app->run();
                    
  • Lance Silex
  • run() ne doit être appelé qu'une fois

Debug

Par défaut, en cas d'erreur, Silex ne va pas renvoyer beaucoup d'informations

Il suffit de rajouter le code suivant après l'avoir instancié pour obtenir plus de détails



$app = new Silex\Application();
$app['debug'] = true;
                    

Services

  • Par défaut, Silex va tourner avec le minimum de fonctionnalités
  • Ces fonctionnalités s'appellent Services
  • Nous allons en rajouter par la suite

Services

  • Il en existe pour tout
    • Templating
    • Gestion des URLs
    • Formulaires
    • Cache
    • Sécurité
    • Mails
    • Traductions
    • ...

Documentation