Skip to content

Latest commit

 

History

History

03-tp-composer

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

TP Composer

L'objectif est de prendre en main composer, installer un composant symfony en dehors de symfony et utiliser une librairie PHP.

Documentation :

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

Créez un nouveau dossier tp-composer et déplacez-vous y avec votre terminal.

Pour initialiser un projet avec Composer, vous pouvez exécuter la commande composer init (⚠️ Cela va créer le projet dans le dossier courant de votre terminal).

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

  1. composer init - Initialise un projet composer

Vous devriez avoir un comportement similaire à :

bash-5.1$ composer init


  Welcome to the Composer config generator  

This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [foo/app]: nomprenom/tp-composer
Description []: Ceci est le premier tp avec composer
Author [n to skip]: Prenom NOM <[email protected]>
Minimum Stability []: 
Package Type (e.g. library, project, metapackage, composer-plugin) []: project
License []: 

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
Add PSR-4 autoload mapping? Maps namespace "Nomprenom\TpComposer" to the entered relative path. [src/, n to skip]: src/

{
    "name": "nomprenom/tp-composer",
    "description": "Ceci est le premier tp avec composer",
    "type": "project",
    "autoload": {
        "psr-4": {
            "Nomprenom\\TpComposer\\": "src/"
        }
    },
    "authors": [
        {
            "name": "Prenom NOM",
            "email": "[email protected]"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? 
Generating autoload files
Generated autoload files
PSR-4 autoloading configured. Use "namespace Nomprenom\TpComposer;" in src/
Include the Composer autoloader with: require 'vendor/autoload.php';

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

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

Repérez la partie autoload de votre fichier: composer.json

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

Puis lancer la commande suivante pour régénérer les fichiers composer :

composer dump-autoload

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

Exercice

L'objectif : Écrire une commande PHP (en console/CLI pour Command Line Interface) hello world à l'aide de symfony/console avec un fichier de log (journal) à l'aide de monolog/monolog.

  1. Créé votre projet avec composer init
  2. Veuillez suivre la documentation pour ajouter le composant symfony/console à votre projet fraichement créé.
  3. Toujours avec l'aide de la documentation, vous devez créer une application à la racine du projet (fichier application.php comme décrit dans la documentation).
    • Créé votre application grâce à symfony/console.
    • Pour exécuter votre application, faites php application.php, vous devriez voir un message apparaître.
  4. Création de votre première commande
    • Ajoutez à votre application une première commande (fichier HelloWorldCommand.php dans le dossier src/Command).
    • Cette commande doit afficher "Hello World!" lorsque vous l'exécuter. Cette documentation peut vous aider ;).
    • Le nom de votre commande doit être : app:hello-world.
  5. Modifier de votre commande pour recevoir un argument d'entrée name à votre commande.
    • L'objectif est d'afficher "Hello <name>!" à la place de "Hello World!" lorsque l'argument name est passé à la commande.
    • Si l'argument name n'est pas passé dans ce cas, on doit afficher "Hello World!".
  6. Ajout d'une librairie
    • Ajoutez ensuite le paquet/librarie monolog/monolog à votre projet et utilisez ce package pour écrire des logs dans le fichier logs/console.log.
    • Écrire un log lorsque application.php démarre.
    • Écrire un log lorsque vous exécutez votre commande app:hello-world démarre.
    • (Bonus) Écrire un log de type ERROR lorsque l'argument name est AZERTY
  7. Bonus en vrac
    • Documentation et commentaire dans le code.
    • Pour approfondir, regardez les possibilités de style offertes par le composant Console (progress bar, couleurs, sections, tableaux, etc).