Retour : Page Principale > sommaire aide > sommaire aide logiciels

Composer

Composer est un système de paquets pour PHP. Il est en lice pour le prix du logo le plus moche.
Il permet de réutiliser des briques logicielles libres sans avoir à les copier-coller salement dans le répertoire de son appli.

Site officiel et documentation (en anglais) : https://getcomposer.org

Les paquets Tela Botanica sur packagist.org : https://packagist.org/packages/telabotanica

Installation

Si votre distribution est à jour, composer doit être dans les dépôts - installez-donc le paquet.

Sinon, utiliser cette méthode dont le principe est incroyablement dangereux et merdique mais qui marche :)
https://getcomposer.org/download/
(plus de détails sur les options d'installation : https://getcomposer.org/doc/00-intro.md)

Composer requiert PHP 5.3.2.
Sur sequoia (2016-03-09), il est installé avec PHP 5.4; on l'appelle donc comme ceci :
/usr/local/php/5.4/bin/php /usr/local/bin/composer.phar


Utilisation

Le principe : on déclare à la racine de son application un fichier composer.json qui déclare les dépendances et leurs versions, puis on lance
composer install
et voilĂ , c'est tout facile.

Exemple de fichier composer.json minimal pour ezmlm-php :
{
    "require": {
        "php-mime-mail-parser/php-mime-mail-parser": "^2.2",
        "phpmailer/phpmailer": "^5.2",
        "telabotanica/tb-auth-php": "0.1a@dev"
    }
}


Les paquets installés dans l'appli par Composer se trouvent dans un dossier "vendor", qui ne doit pas être versionné. Au contraire, quand on installe l'application sur une nouvelle machine, on récupère le code sur Git / SVN et on appelle
composer install
pour installer les dépendances.

Créer ses propres paquets

Le plus cool, c'est de créer ses propres paquets ! Quand on a un morceau de code / une lib PHP qu'on souhaite réutiliser (framework, composant d'authentification, classe de Webservice REST de base, etc.), on peut le déclarer sur https://packagist.org , le dépôt principal de paquets pour Composer. On a un compte dessus au nom de "Tela Botanica".

Pour qu'un code soit reconnu comme un paquet, il doit posséder un fichier composer.json à la racine, qui déclare son nom, ses dépendances (s'il y a lieu), etc.
Exemple de fichier composer.json minimal pour telabotanica/tb-auth-php :
{
    "name": "telabotanica/tb-auth-php",
    "description": "A library that helps integrating your PHP software with Tela Botanica's SSO",
    "type": "library",
    "license": "GPLv3",
    "keywords": ["telabotanica", "tela-botanica", "tela botanica", "SSO"],
    "homepage": "https://github.com/telabotanica/tb-auth-php",
    "authors": [
        {
            "name": "Mathias Chouet",
            "email": "mathias@tela-botanica.org"
        }
    ],
    "require": {
		"php": ">=5.3.0"
	},
	"autoload": {
		"psr-0": {
			"AuthTB": ""
		}
	}
}

Ce qui est top c'est qu'en posant le code du paquet sur GitHub et en déclarant l'URL du dépôt GitHub à packagist.org, celui-ci rend automatiquement le paquet disponible dans Composer, et surveille les mises à jour tout seul ! Un nouveau tag créé sur le dépôt Git donnera lieu à une nouvelle version, s'il est de la forme [0-9\.]+[a-z\-]* (ou quelque chose dans ce genre), par exemple : "0.1a" ou "1.4.2".

Cette doc est pas mal pour apprendre Ă  faire un paquet.
http://connect.adfab.fr/outils/creer-package-pour-composer-avec-github-packagist-partie-1-2
http://connect.adfab.fr/outils/creer-un-package-pour-composer-avec-github-et-packagist-partie-2

Sur Sequoia (<= 2017)

Comment lancer Composer sur Sequoia ? Mais voyons c'est pourtant simple !
/usr/local/php/5.4/bin/php /usr/local/bin/composer.phar