L'objectif est de prendre en main composer, installer un composant symfony en dehors de symfony et utiliser une librairie PHP.
Documentation :
- Composer
- Packagist
- Documentation de symfony/console
- Documentation de monolog/monolog
- Composer Cheat Sheet
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
(
La commande est intéractive, vous pouvez vous référer au bloc ci-dessous pour les valeurs à fournir.
composer init
- Initialise un projet composer- name:
formation/tp-composer
- type:
project
- author:
Prenom NOM <[email protected]>
- name:
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
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.
- Créé votre projet avec
composer init
- Veuillez suivre la documentation pour ajouter le composant
symfony/console
à votre projet fraichement créé. - Toujours avec l'aide de la documentation, vous devez créer une
application
à la racine du projet (fichierapplication.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.
- Créé votre application grâce à
- Création de votre première commande
- Ajoutez à votre application une première commande (fichier
HelloWorldCommand.php
dans le dossiersrc/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
.
- Ajoutez à votre application une première commande (fichier
- 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'argumentname
est passé à la commande. - Si l'argument
name
n'est pas passé dans ce cas, on doit afficher "Hello World!".
- L'objectif est d'afficher "Hello
- Ajout d'une librairie
- Ajoutez ensuite le paquet/librarie
monolog/monolog
à votre projet et utilisez ce package pour écrire des logs dans le fichierlogs/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
estAZERTY
- Ajoutez ensuite le paquet/librarie
- 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).