TP Composer

Initialisation

Composer est le gestionnaire de paquets de PHP. Il peut être comparé à npm pour Javascript ou pip pour Python.

Créez un nouveau dossier et déplacez-vous y dans votre terminal.

Pour initialiser un projet avec Composer, vous pouvez exécuter la commande composer init.

La commande est intéractive, vous pouvez vous référer au bloc ci-dessous pour les valeurs à fournir.

Pour les autres champs, vous pouvez simplement appuyer sur Entrée pour ne pas mettre de valeur.

Package name : <vendor>/<package>
Author : Prénom NOM <email@domain.ltd>
Package Type : project

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no

Do you confirm generation [yes]? yes

Analysez le contenu du fichier composer.json qui a été généré.

Pour fonctionner correctement, vous devez ajouter quelques lignes de configuration dans votre composer.json.

"autoload": {
    "psr-4": {
        "App\\": "src/"
    }
}

Puis lancer la commande

composer dump-autoload

Cela indique à composer que le dossier src correspond à l’espace de nom (namespace) App

Exercice

Le but de ce TP va être de réaliser une commande à l’aide de symfony/console

Suivez la documentation pour ajouter le composant à votre projet.

Toujours grâce à la documentation, créez votre application à la racine du projet (fichier application.php décrit dans la doc).

Pour la lancer, faites php application.php, vous devriez voir un message d’aide apparaître.

Dans la documentation, il est souvent mentionné la commande php bin/console ... mais dans le cadre de ce TP vous devrez remplacer ça par php application.php ....

Ajoutez votre première commande (fichier HelloWorldCommand.php dans le dossier src/command) qui affichera (output) un Hello World!. Cette documentation pourra vous aider.

Veillez à bien faire $application->add() AVANT $application->run()

Ajoutez un argument name (input) à votre commande afin d’afficher Hello <name>! si l’argument name est passé à la commande, Hello World! sinon.

Ajoutez ensuite monolog/monolog à votre projet et utilisez ce package pour écrire des logs dans le fichier logs/console.log.

Pour approfondir, regardez les possibilités de style offertes par le composant Console (progress bar, couleurs, sections, tableaux, etc)

Ressources