PHP : la bonne pratique

Apprendre les bonnes pratiques de programmation en PHP


précédentsommairesuivant

IV. La gestion des dépendances

Il existe une tonne de bibliothèques PHP, de frameworks et de composants pour gérer les dépendances. Votre projet va surement utiliser plusieurs d'entre eux — ce sont les dépendances d'un projet. Jusqu'à récemment, le PHP n'avait pas de moyen fiable pour gérer ces dépendances. Même si vous les gériez de façon manuelle, vous deviez toujours vous inquiéter des autoloaders. Mais plus maintenant.

À l'heure actuelle, il existe deux gestionnaires de packaging pour PHP - Composer et PEAR. Lequel correspond le mieux à vos attentes ? Cela dépend de la taille de votre projet.

  • Utilisez Composer pour la gestion des dépendances d'un seul projet.
  • Utilisez PEAR lorsque vous devez gérer les dépendances pour un système complet.

En général, les packages Composer seront disponibles uniquement pour les projets auxquels vous les aurez explicitement spécifiés alors qu'un package PEAR sera disponible pour tous vos projets PHP. Bien que PEAR semble être la meilleure approche au premier regard, il existe de nombreux avantages à utiliser une approche de gestion des dépendances par projet.

IV-A. Composer et Packagist

Composer un excellent gestionnaire de dépendances pour PHP. Listez les dépendances de votre projet dans un fichier composer.json et en quelques commandes, Composer va automatiquement télécharger ces dépendances et les installer pour vous.

Il existe déjà un grand nombre de bibliothèques PHP compatibles avec Composer, prêtes à être utilisée par votre projet. Ces « paquets » sont listés sur Packagist, le répertoire officiel pour les bibliothèques compatibles avec Composer.

IV-A-1. Comment installer Composer

Vous pouvez installer Composer localement (dans votre répertoire de travail courant; bien que cela ne soit plus recommandé) ou globalement (par ex., /usr/local/bin). Supposons que vous vouliez installer Composer localement. Depuis la racine de votre projet, tapez :

 
Sélectionnez
1.
curl -s https://getcomposer.org/installer | php

Cela va télécharger composer.phar qui est une archive PHP binaire. Vous pouvez le lancer avec PHP pour gérer vos dépendances.

Attention : si vous redirigez du code téléchargé directement dans un interpréteur, veuillez d'abord lire le code en ligne pour confirmer qu'il est sûr.

IV-A-2. Installation sous Windows

Pour les utilisateurs de Windows, la façon la plus pratique de mettre en place Composer est d'installer ComposerSetup qui va faire tout le travail pour vous (modification du $PATH) afin d'appeler l'utilitaire Composer directement depuis votre terminal.

IV-A-3. Comment installer Composer (manuellement)

Installer manuellement Composer est une technique avancée. Cependant, il existe diverses raisons pour lesquelles un développeur aurait besoin de le faire. L'installation interactive va vérifier que la version installée :

  • contient une version suffisamment récente pour être utilisable ;
  • peut exécuter correctement des fichiers .phar ;
  • a des permissions suffisantes sur certains répertoires ;
  • possède des extensions problématiques qui ne seront alors pas chargées ;
  • a les bonnes configurations au niveau du fichier php.ini.

Étant donné qu'une installation manuelle n'effectue aucune de ces vérifications, vous devrez décider vous-même du meilleur compromis à faire. Voici comment obtenir Composer manuellement :

 
Sélectionnez
1.
2.
curl -s https://getcomposer.org/composer.phar -o $HOME/local/bin/composer
chmod +x $HOME/local/bin/composer

Le chemin $HOME/local/bin (ou le répertoire de votre choix) doit être dans la variable d'environnement $PATH. Ainsi, la commande composer peut être accessible de partout.

Quand vous tombez sur de la documentation qui indique de lancer Composer avec PHP composer.phar install, vous pouvez substituer cette commande avec : composer install.

La section suivante suppose le fait que vous avez installé Composer « globlalement ».

IV-A-4. Comment définir et installer les dépendances

Composer garde la trace des dépendances de votre projet dans un fichier nommé composer.json. Vous pouvez le maintenir vous-même à la main ou utiliser Composer. La commande composer require ajoute une dépendance à votre projet et, si vous n'avez pas de fichier composer.json, va le créer. Voici un exemple qui ajoute Twig en tant que dépendance pour votre projet :

 
Sélectionnez
1.
composer require twig/twig:~1.8

Alternativement, la commande composer init va vous guider à travers la création du fichier composer.json. De toute manière, une fois que ce fichier est créé, vous pouvez indiquer à Composer de télécharger et d'installer vos dépendances dans le répertoire vendors/. Cela s'applique aussi aux projets que vous avez téléchargés et qui possèdent déjà un fichier composer.json :

 
Sélectionnez
1.
composer install

Ensuite, ajoutez cette ligne dans le fichier PHP principal de votre application, cela va dire à PHP d'utiliser l'autochargeur de Composer pour les dépendances de votre projet :

 
Sélectionnez
1.
2.
<?php
require 'vendor/autoload.php';

Maintenant si vous utilisez les bibliothèques dont votre projet est dépendant, elles seront chargées à la demande.

IV-A-5. Mettre à jour vos dépendances

Composer crée un fichier appelé composer.lock qui stocke la version exacte de chaque paquet qui a été téléchargé quand vous avez exécuté pour la première fois php composer.phar install. Si vous partagez votre projet avec d'autres développeurs et que le fichier composer.lock y est inclus, alors ils auront les mêmes versions que vous. Pour mettre à jour ces dépendances, exécutez php composer.phar update.

Cela est très pratique quand vous définissez les versions requises de façon flexible. Par exemple, une version exigée de ~1.8 signifie « tout ce qui est plus récent que 1.8.0, mais inférieur à 2.0.x-dev ». Vous pouvez aussi utiliser le joker * par exemple 1.8.*. À partir de là, la commande php composer.phar update va mettre à jour vos dépendances à la dernière version en suivant les restrictions demandées.

IV-A-6. Notifications de mise à jour

Pour recevoir les notifications de nouvelles versions, vous pouvez vous enregistrer sur VersionEye qui est un service web qui surveille vos fichiers composer.json sur vos comptes Github et BitBucket et vous envoie des emails avec les nouvelles versions.

IV-A-7. Vérifier vos dépendances pour des raisons de sécurité

Le Security Advisories Checker est un service web et un outil en ligne de commande qui va examiner votre fichier composer.lock et vous dire si vous avez besoin d'une mise à jour sur chacune de vos dépendances.

En savoir plus sur Composer

IV-B. PEAR

Un autre ancien gestionnaire de paquets que beaucoup de développeurs PHP adorent est PEAR. Il se comporte pratiquement de la même façon que Composer, mais possède des différences notables.

PEAR exige que chaque paquet ait une structure spécifique ce qui veut dire que l'auteur du paquet doit le préparer en vue d'être utilisé par PEAR. Utiliser une bibliothèque qui n'était pas préparée pour PEAR ne marchera pas.

PEAR installe les paquets de façon globale ce qui signifie qu'après les avoir installés ils seront accessibles depuis n'importe quel projet sur le serveur. Cela peut être intéressant si beaucoup de projets se basent sur la même version du même paquet, mais peut poser problème en cas de conflits entre deux projets ayant besoin de versions différentes.

IV-B-1. Comment installer PEAR

Vous pouvez installer PEAR en téléchargeant l'installateur phar et en l'exécutant. La documentation PEAR a des instructions détaillées pour chaque système d'exploitation.

Si vous utilisez Linux, vous pouvez aussi vous baser sur le gestionnaire de paquets de votre distribution. Par exemple pour Debian et Ubuntu, il existe un paquet s'appelant php-pear.

IV-B-2. Comment installer un paquet

Si le paquet figure sur la liste des paquets PEAR, vous pouvez l'installer en spécifiant son nom officiel : pear install foo

Si le paquet est hébergé sur un autre canal, vous aurez alors besoin de découvrir ce canal et aussi de le spécifier lors de l'installation.

En savoir plus sur PEAR

IV-B-3. Gérer les dépendances PEAR avec Composer

Si vous utilisez déjà Composer et que vous voulez installer quelques paquets gérés par PEAR aussi alors vous pouvez utiliser Composer pour gérer les dépendances à PEAR. L'exemple suivant va installer du code de pear2.php.net :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
{
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear2.php.net"
        }
    ],
    "require": {
        "pear-pear2/PEAR2_Text_Markdown": "*",
        "pear-pear2/PEAR2_HTTP_Request": "*"
    }
}

La première section « repositories » va être utilisée pour faire savoir à Composer qu'il doit « initialiser » (ou « découvrir » selon la terminologie PEAR) le répertoire pear. Ensuite la section require va préfixer le paquet de la façon suivante :

 
Sélectionnez
1.
pear-channel/Package

Le préfixe « pear » est écrit en dur pour éviter tout conflit étant donné que le canal pear peut être le même que d'autres paquets par exemple. Puis le nom court du canal (ou l'URL complète) peut être utilisé pour référencer dans quel canal se trouve le paquet.

Quand ce paquet est installé, il sera accessible dans votre répertoire de façon automatique grâce à l'autochargeur de Composer :

 
Sélectionnez
1.
vendor/pear-pear2.php.net/PEAR2_HTTP_Request/pear2/HTTP/Request.php

Pour utiliser ce paquet PEAR, référencez-le simplement de cette façon :

 
Sélectionnez
1.
$request = new pear2\HTTP\Request();

En savoir plus sur la façon d'utiliser PEAR avec Composer


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Licence Creative Commons
Le contenu de cet article est rédigé par Josh Lockhart et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2017 Developpez.com.