Premiers pas avec le framework PHP Silex

Formation

À Paris

Prix sur demande

Appeler le centre

Avez-vous besoin d'un coach de formation?

Il vous aidera à comparer différents cours et à trouver la solution la plus abordable.

Description

  • Typologie

    Formation

  • Lieu

    Paris

Nous vous proposons des cours ouverts pour se former autrement, pour devenir acteur de votre vie. Nous vous aidons à prendre votre envol, mais ça ne s'arrête pas là. Notre volonté est de vous accompagner tout au long de votre vie, dans votre parcours professionnel.Grâce à cette formation vous pourrez acquérir les connaissances nécessaires qui vous permettrons d’ajouter des compétences à votre profil et obtenir de solides aptitude qui vous offriront de nombreuses opportunités professionnelles.

Les sites et dates disponibles

Lieu

Date de début

Paris ((75) Paris)
Voir plan
7 Cité Paradis, 75010

Date de début

Consulter

Questions / Réponses

Ajoutez votre question

Nos conseillers et autres utilisateurs pourront vous répondre

À qui souhaitez-vous addresser votre question?

Saisissez vos coordonnées pour recevoir une réponse

Nous ne publierons que votre nom et votre question

Les Avis

Le programme

Introduction du cours

Ce cours vise à se familiariser avec le framework PHP Silex par la pratique, en écrivant une application Web basique.

Pré-requis

Pour bien suivre ce cours, vous devez :

  • Connaître les bases du langage PHP. Si vous êtes un débutant PHP complet, commencez par vous familiariser avec ce langage. Pour cela, je vous conseille les tutoriels d'OpenClassrooms ou de Codecademy.

  • Disposer d'une machine de développement incluant le serveur Web Apache.

Présentation de Silex

Silex est un micro-framework PHP développé par la société française SensioLabs, créatrice du framework Symfony. Silex est en quelque sorte le petit frère de Symfony et les deux frameworks reposent sur les mêmes composants.

Contrairement à Symfony qui fournit (et impose) une architecture complète (dite « full stack »), Silex est un framework minimaliste qui laisse beaucoup de liberté au développeur. C'est pourquoi on peut le qualifier de micro-framework. Il fournit un ensemble réduit de services au-dessus desquels on peut développer une application Web. Son minimalisme le rend idéal pour s'initier en douceur au fonctionnement d'un framework PHP.

Silex dispose d'une documentation en ligne assez complète. Dans ce tutoriel, nous allons nous contenter de l'utiliser pour afficher un simple message "Hello World" à l'utilisateur.

Installation de Silex

L'installation de Silex peut s'effectuer de deux manières :

  • En téléchargeant une archive du code source, disponible ici.

  • En utilisant le gestionnaire de dépendances Composer.

Nous allons utiliser la seconde solution, plus formatrice : Composer est un outil essentiel que tout développeur PHP sérieux se doit de connaître.

Introduction à Composer

Composer est un outil qui permet de définir des dépendances entre des projets PHP (exemple : "mon projet a besoin de Silex") et de récupérer automatiquement les fichiers associés.

Pour fonctionner, Composer doit être installé sur la machine de développement. Vous trouverez plus de détails, ainsi que la procédure d'installation, en consultant sa documentation. Je vous conseille d'effectuer une installation globale afin que la commande composer soit disponible en ligne de commande. Vous pouvez le vérifier en ouvrant une fenêtre de terminal puis en tapant simplement :

composer

Si l'installation de Composer a réussi, vous obtenez la description des options utilisables.

Création du fichier de dépendances

Une fois Composer installé, il faut créer un fichier de dépendances pour exprimer le fait que notre projet a besoin de Silex pour fonctionner.

Dans un premier temps, nous allons travailler directement dans le répertoire servi par votre serveur Web local. Son emplacement dépend de votre installation. Voici quelques emplacements possibles :

  • c:\xampp\htdocs avec XAMPP pour Windows.

  • /var/www ou /var/www/html sous Linux.

  • /Applications/MAMP/htdocs avec MAMP pour Mac.

Créez dans ce répertoire un sous-répertoire nommé hello-world-silex  qui sera le répertoire racine de notre application Web. Déplacez-vous dans ce répertoire puis créez un fichier texte nommé composer.json . Ensuite, copiez-collez le texte ci-dessous dans ce fichier.

{ "require": { "silex/silex": "1.3.*" } }

Ce fichier va être lu par Composer, qui va en déduire que le projet courant nécessite Silex (plus précisément : la plus récente des versions 1.3) et va récupérer automatiquement les fichiers nécessaires.

Récupération de Silex via Composer

Ouvrez une fenêtre de terminal et déplacez-vous dans le répertoire hello-world-silex  créé plus haut. Ensuite, lancez la commande ci-dessous :

composer install

Si tout va bien, Composer va télécharger les fichiers de Silex dans un sous-répertoire nommé vendor  du répertoire courant. Pourquoi ce nom ? Il s'agit d'une convention standard : dans un projet PHP, le répertoire vendor  rassemble le code issu de projets tiers.

Téléchargement des composants Silex via Composer

Voici à présent l'arborescence de notre projet. On vérifie au passage que Silex repose sur certains composants du framework Symfony, regroupés dans le sous-répertoire symfony  du répertoire vendor .

Arborescence de Silex

Si vous êtes curieux(se), c'est le moment d'aller examiner le code source de ces composants... Heureusement, cette étape n'est pas indispensable pour utiliser Silex ou Symfony.

Aperçu du fonctionnement de SilexUn premier exemple

Maintenant que Silex est installé, il est temps de voir comment l'utiliser. Pour cela, créez dans hello-world-silex  un sous-répertoire web , puis créez dans web  un fichier index.php . Copiez/collez le code ci-dessous dans ce fichier.

<?php require_once __DIR__.'/../vendor/autoload.php'; $app = new Silex\Application(); $app->get('/', function () { return 'Hello world'; }); $app->run();

Le fichier vendor/autoload.php  est généré automatiquement par Composer. En l'incluant dans notre fichier source au moyen de l'instruction PHP require_once, on peut ensuite utiliser tous les éléments PHP définis dans les sous-répertoires de vendor . L'intérêt de cette pratique est expliqué dans cet article.

__DIR__ est une constante magique PHP qui contient le chemin absolu du dossier qui contient le fichier PHP courant.

Le reste du code source du fichier index.php  instancie un objet nommé $app , puis définit ce qu'on appelle une route.

Une route est un point d'entrée dans une application Web. Elle définit une correspondance entre une URL et une action de l'application.

La route définie ici renvoie le texte "Hello world" lorsque l'URL racine de l'application (/) est demandée. La syntaxe utilisée pour définir l'action peut sembler déroutante à première vue. Il s'agit d'une fermeture (closure), une fonction définie à l'intérieur du corps d'une autre fonction. Ce concept existe dans de nombreux langages.

Test de l'exemple

Afin de contrôler que notre exemple fonctionne, vérifiez que votre serveur Web local est lancé puis tapez l'URL http://localhost/hello-world-silex/web/index.php dans votre navigateur Web favori.

Vous devriez obtenir l'affichage du texte "Hello world" dans le navigateur.

Initiation au routage avec Silex

Pour l'instant, notre application Web ne dispose que d'un point d'entrée. Ajoutons-en un autre en ajoutant une nouvelle route dans le fichier index.php .

<?php require_once __DIR__.'/../vendor/autoload.php'; $app = new Silex\Application(); $app->get('/', function () { return 'Hello world'; }); $app->get('/hello/{name}', function ($name) use ($app) { return 'Hello ' . $app->escape($name); }); $app->run();

Cette nouvelle route correspond à une URL de type /hello/nom . La partie de l'URL située après /hello/  est passée à l'action sous la forme d'un paramètre nommé $name.

L'action associée à la nouvelle route construit le message affiché par concaténation. L'URL /hello/Bob  affichera le message "Hello Bob". Elle utilise la méthode escape, qui permet d'éviter les injections de code dans le résultat généré.

Pour tester la nouvelle route, pointez votre navigateur vers http://localhost/hello-world-silex/web/index.php/hello/Bob et vérifiez que vous obtenez le message prévu.

Simplification des URL

Vous aurez noté que les URL de notre application Web commencent toutes par /web/index.php , ce qui est peu pratique. Plutôt que devoir écrire http://localhost/hello-world-silex/web/index.php/hello/Bob, on aimerait pouvoir écrire http://localhost/hello-world-silex/hello/Bob.

Nous allons aller plus loin et faire en sorte que l'application réponde à une URL de la forme http://hello-world-silex/hello/Bob. Cela nécessite de modifier la configuration du serveur Web local, qui sera Apache dans notre exemple.

Définition d'un hôte virtuel

La première étape est de définir un hôte virtuel (virtual host). Le principe des hôtes virtuels est de définir plusieurs serveurs logiques sur un même serveur physique. Vous trouverez tous les détails sur les hôtes virtuels dans la documentation Apache.

Sous Windows et Mac OS X

La configuration d'un hôte virtuel  Apache sous Windows et Mac OS X nécessite l'édition du fichier de configuration httpd-vhosts.conf . Son emplacement dépend de l'installation d'Apache :

  • c:\xampp\apache\conf\extras  avec XAMPP sous Windows.

  • /Applications/MAMP/conf/apache/extras  avec MAMP sous Mac OS X.

Ouvrez ce fichier avec un éditeur de texte puis ajoutez le contenu ci-dessous à la fin en adaptant les lignes commençant par DocumentRoot et Directory  à votre configuration locale.

<VirtualHost *:80> DocumentRoot "C:\xampp\htdocs" ServerName localhost </VirtualHost> <VirtualHost *:80> DocumentRoot "C:\xampp\htdocs\hello-world-silex\web" ServerName hello-world-silex <Directory "C:\xampp\htdocs\hello-world-silex\web"> AllowOverride all </Directory> </VirtualHost>

Le premier hôte virtuel redéfinit localhost, ce qui est nécessaire quand on rajoute des hôtes virtuels sous Apache. Le second crée un hôte virtuel associé au nom hello-world-silex  et dont la racine est le répertoire hello-world-silex/web .

Ensuite, éditez le fichier principal de configuration apache. Il se nomme httpd.conf  et se trouve dans le répertoire de configuration d'Apache (exemples :  c:\xampp\apache\conf avec XAMPP sous Windows, /Applications/MAMP/conf/apache avec MAMP sous Mac OS X). Dans ce long fichier, vérifiez que la ligne incluant le fichier httpd-vhosts.conf  est bien décommentée (absence de '#' au début de la ligne), et décommentez-là au besoin.

Voici le résultat à obtenir avec XAMPP sous Windows :

# Virtual hosts Include conf/extra/httpd-vhosts.conf

Et voici le résultat à obtenir avec MAMP sous Mac OS X.

# Virtual hosts Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Pour que la nouvelle configuration soit prise en compte, il faut redémarrer le serveur Web Apache. Faites-le maintenant. 

Sous Linux

La configuration d'un hôte virtuel Apache sous Linux se fait en ajoutant un fichier de configuration dans le répertoire /etc/apache2/sites-available . La procédure est décrite en détail dans la documentation Ubuntu. Le fichier à ajouter se nommera ici hello-world-silex.conf et pourra avoir le contenu suivant (dans cet exemple, le dossier servi par Apache est le répertoire /var/www/html).

<VirtualHost *:80> ServerName hello-world-silex DocumentRoot /var/www/html/hello-world-silex/web <Directory "/var/www/html/hello-world-silex/web"> AllowOverride all Require all granted </Directory> </VirtualHost>

Il faut ensuite activer le nouvel hôte virtuel en lançant la commande suivante.

sudo a2ensite hello-world-silex.conf

Elle a pour effet de créer dans le répertoire /etc/apache2/sites-enabled un lien symbolique  qui pointe vers le fichier /etc/apache2/sites-available/hello-world-silex.conf .

Pour que la nouvelle configuration soit prise en compte, il faut redémarrer le serveur Web Apache. Faites-le maintenant à l'aide de la commande ci-dessous.

sudo service apache2 restartModification des informations DNS

Une fois l'hôte virtuel créé et quel que soit votre système d'exploitation, il faut ajouter une information au fichier hosts local pour que la résolution DNS pointe sur la machine locale (127.0.0.1). Là encore, l'emplacement de ce fichier dépend de votre système :

  • C:\Windows\System32\drivers\etc\hosts  sous Windows.

  • /etc/hosts  sous Mac OS X et Linux.

La modification de ce fichier nécessite des droits d'administrateur. Si vous êtes sous Windows, lisez cet article pour savoir comment les obtenir. 

Editez ce fichier afin d'y ajouter la ligne ci-dessous.

127.0.0.1 hello-world-silex

Une fois le fichier hosts  modifié, l'application doit répondre à l'URL http://hello-world-silex avec le message "Hello world".

Reécriture des URL à la volée

Si vous tentez maintenant d'accéder à l'URL http://hello-world-silex/hello/Bob, vous obtenez un message d'erreur de notre navigateur. Afin de rendre ce type d'URL fonctionnel, il faut rediriger toutes les requêtes entrantes vers le fichier...

Appeler le centre

Avez-vous besoin d'un coach de formation?

Il vous aidera à comparer différents cours et à trouver la solution la plus abordable.

Premiers pas avec le framework PHP Silex

Prix sur demande