Composer
Pourquoi ? Comment ? Et plus ...
@AFUP_Marseille - 2015-02-26
Romain Cambien
● Co-organisateur AFUP Marseille
● Développeur Symfony
● Administrateur système
● Co-fondateur et
directeur...
Gestion des dépendances :
● Manuelle :
Télécharger, décompresser, recommencer ...
● PEAR : http://pear.php.net/
● Pas de d...
Composer
● Créé fin 2011 par Nils Adermann et Jordi
Boggiano
● Deux parties :
○ Composer : le client en ligne de commande
...
Le client en ligne de commande
● Installation :
$ curl -sS https://getcomposer.org/installer | php.
Astuce :
$ curl -sS ht...
Création d’un projet
$ composer create-project [package] [path] [version]
● Copie le paquet dans le répertoire cible
● Ins...
Le fichier composer.json
{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description...
Où trouver les paquets ?
● Packagist.org : le dépôt par défaut
$ composer require "monolog/monolog: 1.12.*".
● Git / SVN /...
Où trouver les paquets ?
● Paquet ne supportant pas Composer
{ .
"repositories": [ .
{ .
"type": "package", .
"package": {...
Où trouver les paquets ?
● PEAR
{ .
"repositories": [ .
{ .
"type": "pear", .
"url": "http://pear2.php.net" .
} .
], .
"re...
Le fichier composer.lock
● Généré par composer update
● Lu par composer install
● Conserver les versions exactes des paque...
Autoloader Composer
● Généré lors d’un update ou install
● Disponible dans ./vendor/autoload.php
● Respecte les règles de ...
Composer global
● Permet d’installer des outils PHP
● S’utilise en rajoutant l’argument global
$ composer global require "...
Création d’un dépôt privé
● Packagist : https://github.com/composer/packagist
○ Installation et configuration complexes
○ ...
Installation de Toran
● Télécharger
● Décompresser
● Renommer et configurer
./app/config/parameters.yml.dist
en ./app/conf...
Toran Proxy
Packagist.orgProjet
Toran
{
"repositories": [
{"type": "composer", "url": "http://toran.example.com/repo/packa...
Interface WEB
Configuration des dépôts privés
Liste des paquets Packagist
Configuration de Toran
Configurer un dépôt privé
Même fonctionnement que pour les dépôts privés dans le
composer.json !
Configuration de Toran
Activation du proxy Packagist
Configuration de la cache des archives :
● Lazy : Cache à la demande
...
Questions ?
Merci !
Rejoignez l’AFUP Marseille !
Twitter : @AFUP_Marseille
Meetup : Marseille-PHP-User-Group
Prochain SlideShare
Chargement dans…5
×

PHP Composer : Pourquoi ? Comment ? Et plus ...

1 508 vues

Publié le

Présentation de la gestion de dépendance grâce à Composer. Comment l'installer et le principales commandes à connaitre. Présentation et demonstration du projet Toran Proxy.

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 508
Sur SlideShare
0
Issues des intégrations
0
Intégrations
21
Actions
Partages
0
Téléchargements
21
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

PHP Composer : Pourquoi ? Comment ? Et plus ...

  1. 1. Composer Pourquoi ? Comment ? Et plus ... @AFUP_Marseille - 2015-02-26
  2. 2. Romain Cambien ● Co-organisateur AFUP Marseille ● Développeur Symfony ● Administrateur système ● Co-fondateur et directeur Technique chez Riverline NOUS RECRUTONS ;) @r_cambien
  3. 3. Gestion des dépendances : ● Manuelle : Télécharger, décompresser, recommencer ... ● PEAR : http://pear.php.net/ ● Pas de dépendances par projet ● Installation système ● Peu de paquets, ajout de paquets compliqués PEAR : 600 vs Compser : > 50 000
  4. 4. Composer ● Créé fin 2011 par Nils Adermann et Jordi Boggiano ● Deux parties : ○ Composer : le client en ligne de commande ○ Packagist : le dépôt de paquets par défaut ● Inspiré de NPM et Bundler ● Promotion du DRY
  5. 5. Le client en ligne de commande ● Installation : $ curl -sS https://getcomposer.org/installer | php. Astuce : $ curl -sS http://getcomposer.org/installer | php -- -- install-dir=~/bin --filename=composer. ● Mise à jour $ composer self-update. ● Installer les dépendances $ composer install.
  6. 6. Création d’un projet $ composer create-project [package] [path] [version] ● Copie le paquet dans le répertoire cible ● Installe les dépendances Exemples avec des frameworks : Zend : $ composer create-project --stability="dev" zendframework/skeleton-application path/to/install Laravel : $ composer create-project --prefer-dist laravel/laravel path/to/install Symfony : $ composer create-project symfony/framework-standard-edition path/to/install
  7. 7. Le fichier composer.json { "name": "symfony/framework-standard-edition", "license": "MIT", "type": "project", "description": "The "Symfony Standard Edition" distribution", "autoload": { "psr-0": { "": "src/" } }, "require": { "php": ">=5.3.3", "symfony/symfony": "2.3.*", "doctrine/orm": "~2.2,>=2.2.3,<2.5", "doctrine/dbal": "<2.5", "doctrine/doctrine-bundle": "~1.2", "twig/extensions": "1.0.*", "symfony/assetic-bundle": "~2.3", "symfony/swiftmailer-bundle": "~2.3", "symfony/monolog-bundle": "~2.4", "sensio/distribution-bundle": "~2.3", "sensio/framework-extra-bundle": "~3.0,>=3.0.2", "sensio/generator-bundle": "~2.3", "incenteev/composer-parameter-handler": "~2.0" }, "scripts": { "post-install-cmd": [ ... ], "post-update-cmd": [ ... ] }, "config": { "bin-dir": "bin" }, "minimum-stability": "stable", “extra”: { ... } } Nom du projet Configuration de l’autoloader Dépendances Stabilité par défaut Supérieur à une version N’importe quelle version 2.3 N'importe quelle version non majeur ( entre 1.2 et 2 ) N’importe quelle version 3 mais supérieure à 3.0.2 Inférieur à une version “test/test”: “dev-master” Dernier commit dans le dépôt DEV Forcer la stabilité : “2.*@dev”
  8. 8. Où trouver les paquets ? ● Packagist.org : le dépôt par défaut $ composer require "monolog/monolog: 1.12.*". ● Git / SVN / Mercurical : { . "repositories": [ . { . "type": "vcs", . "url": "https://github.com/igorw/monolog" . } . ], . "require": { . "monolog/monolog": "dev-bugfix" . } . } . ● Gestion des tags comme version du paquet ● Gestion des archives avec GitHub et BitBucket
  9. 9. Où trouver les paquets ? ● Paquet ne supportant pas Composer { . "repositories": [ . { . "type": "package", . "package": { . "name": "smarty/smarty", . "version": "3.1.7", . "dist": { . "url": "http://www.smarty.net/files/Smarty-3.1.7.zip", . "type": "zip" . }, . "autoload": { . "classmap": ["libs/"] . } . } . } . ], . "require": { . "smarty/smarty": "3.1.*" . } . } . Même version
  10. 10. Où trouver les paquets ? ● PEAR { . "repositories": [ . { . "type": "pear", . "url": "http://pear2.php.net" . } . ], . "require": { . "pear-pear2.php.net/PEAR2_Text_Markdown": "*", . "pear-pear2/PEAR2_HTTP_Request": "*" . } . } . PEAR sans les inconvénients de PEAR !
  11. 11. Le fichier composer.lock ● Généré par composer update ● Lu par composer install ● Conserver les versions exactes des paquets Également la référence du commit pour les “dev-master” ● Doit être inclus dans le projet ● Ne doit pas être modifié à la main
  12. 12. Autoloader Composer ● Généré lors d’un update ou install ● Disponible dans ./vendor/autoload.php ● Respecte les règles de chaque paquet ○ PSR-0 : TestSubTestTestClass => Test/SubTest/TestClass.php ○ PSR-4 ○ ClassMap : Cherche les classes dans tous les fichiers ○ File : inclus un fichier ● Peut être régénéré par : $ composer dump-autoload Astuce : --optimize pour compiler tous les chemins d'accès aux classes pour de meilleures performances en PROD NE PAS UTILISER EN DEV !!
  13. 13. Composer global ● Permet d’installer des outils PHP ● S’utilise en rajoutant l’argument global $ composer global require "squizlabs/php_codesniffer=2.*" $ composer global update $ composer global remove squizlabs/php_codesniffer ● Installe les paquets dans : ~/.composer/vendor/ ● Rendre disponible les binaires en ajoutant dans le ~/.profile : PATH=~/.composer/vendor/bin:$PATH $ phpcs --version PHP_CodeSniffer version 2.2.0 (stable) by Squiz (http://www.squiz.net)
  14. 14. Création d’un dépôt privé ● Packagist : https://github.com/composer/packagist ○ Installation et configuration complexes ○ Trop de fonctionnalités ( gestion utilisateurs, etc … ) ● Satis : https://github.com/composer/satis ○ Packagist allégé ○ Reste complexe à configurer et à maintenir ● Toran Proxy : https://toranproxy.com/ ○ Produit commercial par le créateur de Composer ○ Permet de soutenir le développement de Composer ○ Installation rapide et peu de configuration Gratuit pour les développements personnels
  15. 15. Installation de Toran ● Télécharger ● Décompresser ● Renommer et configurer ./app/config/parameters.yml.dist en ./app/config/parameters.yml ● Configurer un vhost sur ./web/ Astuce : Tester avec PHP >= 5.4 : ./app/console server:run --env=prod ● Configurer une Crontab pour ./bin/cron ● Terminer … ça marche !
  16. 16. Toran Proxy Packagist.orgProjet Toran { "repositories": [ {"type": "composer", "url": "http://toran.example.com/repo/packagist/"}, {"packagist": false} ] } { "repositories": [ {"type": "composer", "url": "http://toran.example.com/repo/private/"}, {"type": "composer", "url": "http://toran.example.com/repo/packagist/"}, {"packagist": false} ] } GIT / SVN / HG
  17. 17. Interface WEB Configuration des dépôts privés Liste des paquets Packagist Configuration de Toran
  18. 18. Configurer un dépôt privé Même fonctionnement que pour les dépôts privés dans le composer.json !
  19. 19. Configuration de Toran Activation du proxy Packagist Configuration de la cache des archives : ● Lazy : Cache à la demande ● New tags : Cache toutes les versions plus récentes que la plus vieille version en cache ● All : Cache toutes les versions
  20. 20. Questions ?
  21. 21. Merci ! Rejoignez l’AFUP Marseille ! Twitter : @AFUP_Marseille Meetup : Marseille-PHP-User-Group

×