Guide de démarrage rapide

Ce court guide vous présentera la création d’un projet PHP-Bottle. Il ne devrait prendre que quelques minutes pour vous faire comprendre les bases.

Installation

Il vous faut tout d’abord un environnement PHP5 fonctionnel. Un serveur HTTP n’est pas requis pour le développement.

  1. Créez un dossier pour votre application (appelons-le dossierProjet)

  2. Récupérez l’archive PHP-Bottle ici : https://github.com/nergal/php-bottle/raw/master/build/bottle.phar et placez-le à la racine de votre dossierProjet

  3. Récupérez le fichier .htaccess qui permettra la réécriture d’URL ici : https://github.com/nergal/php-bottle/raw/master/.htaccess et placez-le près de votre fichier bottle.phar.

  4. Créez un dossier views dans dossierProjet

C’est fait ! Tout est prêt pour que vous puissiez écrire votre première page avec PHP-Bottle !

Première page

Ok, la dernière étape était trop compliquée, j’ai saisi. Alors baissons d’un cran la difficulté : copiez simplement ça dans un fichier index.php :

<?php

define('APPLICATION_PATH', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);

require_once('bottle.phar');

/**
 * @route /
 */
function index() {
    return 'Welcome on the Bottle index page!';
}

Bien, c’était si compliqué ? Nous sommes prêts à tester ça. Ouvrez un terminal, déplacez-vous dans dossierProjet, et tapez :

$ php -S localhost:8000

Ne fermez pas encore votre terminal ! Nous avons tout juste démarré un serveur de développement PHP. Ouaip, c’était inclus dans PHP depuis tout ce temps (enfin, depuis PHP 5.4.0). Maintenant, il vous suffit d’ouvrir un navigateur web et de charger l’URL http://localhost:8000 . Vous devriez voir une page vous accueillant en anglais. Génial, c’est un bête hello world, et il n’était pas nécessaire de développer un framework pour ça !

Mais nous allons faire quelque chose de plus cool. Comme des URLs dynamiques !

URLs Dynamiques

Avez-vous remarqué le drôle de commentaire juste au-dessus de la fonction index ? C’est un décorateur, mais certains frameworks bizarres appellent ça une annotation. On s’en tiendra à la première version.

Ce décorateur indique à PHP-Bottle quand appeler cette fonction : en l’occurrence, quand une URL correspondant à « / » est trouvée. Essayez ça : modifiez cette ligne, et remplacez « / » par « /mon/url/dynamique ». Rechargez la page (il n’y a pas besoin de redémarrer le serveur de développement que nous avons lancé plus tôt), et ne paniquez pas : vous venez de rencontrer une erreur 404.

Pourquoi ? Parce qu’aucune fonction (qu’on appellera contrôleur) n’a été enregistré pour traiter l’URL « / ». En d’autres termes, la page demandée est introuvable.

Mais que se passe-t-il si vous allez sur la page http://localhost:8000/mon/url/dynamique ? Bien, notre message d’accueil est de nouveau là. Nous avons modifié le décorateur route, et il a littéralement modifié l’URL de notre page.

Pour l’étape suivante, il vaut mieux repartir sur l’ancienne version de la page d’index, où celle-ci était routée sur l’URL /. Alors repartons sur l’exemple « Première page ».

Plusieurs pages

Ajoutez ceci à la fin de votre fichier index.php :

/**
 * @route /hello/:name
 */
function hello($name) {
    return "Hello {$name}!";
}

Regardez attentivement la route définie pour ce contrôleur. Elle contient un mot préfixé d’un deux-points. Cela signifie que « :name » est une variable, une partie dynamique d’une URL (elle-même déjà dynamique). Vous pouvez appeler n’importe quelle URL commençant par « /hello/ », et le reste sera passé dans votre variable $name. Essayez ça, avec http://localhost:8000/hello/world, puis remplacez « world » par votre propre nom.

Vous voyez que la partie « :name » de l’URL est effectivement passée en paramètre à la fonction hello() en tant que $name.

Une route peut définir autant de variables que vous le souhaitez, si vous les ajoutez également comme paramètres à votre contrôleur.

Vues

Vous vous souvenez de la page d’accueil, indiquant que PHP-Bottle était un framework (M)VC ? Et bien, nous avons vu le C(ontrôleur), voyons la V(ue).

Une vue représente la partie « comment est-ce que je l’affiche » d’une application, en opposition au contrôleur, qui est plutôt le « qu’est-ce que j’affiche ».

Donc, basiquement, une vue est une portion de code uniquement destinée à afficher quelque chose.

PHP-Bottle a choisi d’utiliser un moteur de templates bien connu : PHP.

Pour pouvoir utiliser les vues, vous devez tout d’abord en déclarer dans vos décorateurs. Voici un exemple :

/**
 * @route /view-test
 * @view /views/view-test.php
 */
function view_test() {
    return ['var' => 'world'];
}

Le décorateur @view pointe vers la position du fichier de vue, relativement au fichier index.php. Vous pouvez utiliser n’importe quelle extension pour la vue.

La seconde étape, après avoir ajouté un décorateur @view, est de retourner un tableau associatif dans votre contrôleur. Les clés de ce tableau seront extraites dans des variables disponibles dans votre vue. Donc, dans /views/view-test.php, vous pouvez afficher de la façon dont vous voulez la variable $var, telle que définie dans votre contrôleur. Écrivez ceci dans /views/view-test.php :

<h1>Hello <?= $var ?></h1>

Maintenant, ouvrez votre navigateur sur http://localhost:8000/view-test et observez. Vous avez une balise <h1> contenant “Hello world”. La dernière partie de cette phrase a été fournie par le contrôleur. Il aurait tout aussi bien pu s’agir d’une valeur dynamique.