01 Composer
Découverte de Composer
Composer est un gestionnaire de dépendances écrit en PHP pour PHP.
Il permet à ses utilisateurs de déclarer et d'installer les bibliothèques dont le projet principal a besoin.
Composer utilise un fichier composer.json qui contient plusieurs informations sur le projet dont la liste des librairies utilisées. Il est ensuite capable de télécharger automatiquement ces librairies (et les dépendances associées) et de générer un autoloader pour les utiliser simplement dans vos projets PHP.
Installation
L'installation de composer est très simple (dans les 2 cas il faut avoir la commande php disponible dans le terminal) :
- Sous Windows, il vous suivre les instructions suivantes
- Sous unix utiliser votre gestionnaire de package
apt-get install composer
,dnf install composer
, ...
Sur les machines de l'IUT celui-ci est déjà installé
Premier exemple
Composer est un logiciel qui fonctionne en ligne de commande, ainsi il vous suffit d'invoquer composer
pour accèder à la commande composer.
Création d'un répertoire pour le projet
$ mkdir test_composer
$ cd test_composer
Installation d'une librairie via composer
$ composer require rmccue/requests
Cette commande lance la récupération et l'installation de la librairie requests. Si c'est la première fois que la commande est lancée, celle-ci va créée plusieurs répertoires et fichiers :
- composer.json pour spécifier les différentes dépendances,
- composer.lock instannée des dépendances à un instant $t$,
- vendor/ le répertoire qui contient les fichies des dépendances.
L'avantage c'est que composer est capable de gérer les dépendances, donc si votre librairie à besoin d'une autre librairie pour fonctionner elle sera automatiquement téléchargée.
Il est intéressant de versionner le fichier composer.json toutefois le composer.lock ainsi que le dossier vendor viendrait en revanche polluer notre dépôt Git.
Utilisation de notre librairie
C'est bien beau de télécharger des librairie mais encore faut-il être en mesure de les inclure.
Lors d'une install ou d'un update composer va automatiquement généré un autoloader autoload.php
disponible à la racine du répertoire vendor.
Cet autoloader permet de ne pas avoir à inclure les fichier des différentes librairies mais utilise un système d'autoloader, vous n'avez qu'à vous soucier des namespace.
<?php
require "vendor/autoload.php"; // Inclusion de l'autoloader
Découverte de requests
Nous allons voir dans cette partie comment développer une application en PHP appelant une API qui va récupérer le résultat de la requête en JSON (JavaScript Object Notation) pour l’afficher sur votre site web.
Les API sur Internet
Les API sont un moyen d’accéder aux données d’un site sans avoir l’autorisation d’accéder directement à la base de données. Il y a beaucoup de portails sécurisés permettant à vos applications web de manipuler les données renvoyées par ces sites.
L’exemple parfait est Twitter. Elle permet de lire la timeline d’une personne en particulier, de rechercher des statuts à partir d’un mot clé, de modifier les paramètres de votre compte, etc.
Pourquoi choisir JSON ?
Vous pouvez utiliser les API avec de nombreux langages et retourner les données de plusieurs façons. L’une d’elles est le JSON (JavaScript Object Notation). C’est un format de données léger, facile à lire et à écrire et compatible avec pas mal de langages de développement.
Sa structure est composée d’objets et de tableaux. Sa flexibilité fait de JSON le parfait candidat pour retourner des données.
Utilisation de requests
Faire une requête est très simple :
<?php
$response = Requests::get('https://medusa.delahayeyourself.info/api/books/');
Et si on affiche le contenu de $response
:
<?php
var_dump($response->body);
Pour obtenir le statut de la réponse:
<?php
var_dump($response->status_code);
Pour obtenir un tableau à partir du corp de la réponse:
<?php
$books = json_decode($response->body);
On peut maintenant itérer sur ce tableau pour afficher chaque titre de livre:
<?php
foreach($books as $book){
echo $book->title;
}
- Modifiez votre fichier pour afficher sous une belle forme HTML chaque élément retourné par l'API,
- Essayez de récupérer l'élément JSON à l'url suivante: /api/books/a-game-of-thrones comme précédemment,
- Comment corriger ce problème ?
Conclusion
Vous venez de découvrir un gestionnaire de dépendances en PHP qui sera bien utile pour la suite de nos aventures ! Vous avez également découvert les API REST et le format de données JSON ! Félicitations !