# TP1 - Installation et découverte de `Symfony` > This work is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-nc-sa/4.0/). > Permission is explicitly granted to copy, distribute and/or modify this document for educational purposes under the terms of the CC BY-NC-SA license. ## Objectif Les objectifs de ce TP sont : - D'apprendre à installer `Composer` et `Symfony` ; - A configurer un projet `Symfony` ; - A utiliser `Composer` pour la gestion des dépendances ; - A explorer les commandes de la console `Symfony` pour le débogage ; - Réaliser une première application minimaliste en `Symfony` - Et la tester avec PHPUnit. ## Consignes - Durée : 2 heures - De préférence, ne placez **PAS** vos projets `Symfony` dans votre dossier `~/public_html` (les quotas explosent !). - Nous allons utiliser la commande `symfony server:start` pour lancer notre serveur. ## Installation de Composer et `Symfony` - Assurez vous que `~/.local/bin` est dans votre variable d'environnement `$PATH`. - Installation de `Composer` : ```sh # Télécharger Composer php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" # Vérifier l'installateur php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installateur vérifié'; } else { echo 'Installateur corrompu'; unlink('composer-setup.php'); } echo PHP_EOL;" # Installer Composer php composer-setup.php # Supprimer l'installateur php -r "unlink('composer-setup.php');" # Va créer le dossier si n'existe pas mkdir -p ~/.local/bin # Déplacer Composer dans votre $PATH mv composer.phar ~/.local/bin/composer ``` - Installation du binaire de gestion `Symfony` : ```sh # Télécharger et installer `Symfony` curl -sS https://get.symfony.com/cli/installer | bash # Déplacer `Symfony` dans votre $PATH mv ~/.symfony5/bin/symfony ~/.local/bin/symfony # Vérifiez que votre PC a les dépendances requises par `Symfony` symfony check:requirements ``` ## Création de votre premier projet `Symfony` - Placez vous dans votre home et créez votre premier projet `Symfony`: ```sh symfony new --webapp tp1 ``` - Entrez dans votre projet : ```sh cd tp1 ``` - Lancez le serveur de développement de `Symfony` : ``` symfony server:start ``` 1. Rendez-vous sur la page `http://127.0.0.1:8000`. Que constatez-vous ? ## Découverte de la console `Symfony` - Entrez la commande `symfony console` et parcourez les commandes possibles (elles vont servir pour la suite du TP!). 2. Quelle version de `Symfony` tourne à l'IUT ? Quelle version de PHP ? 3. Comment créer un projet avec une version spécifique de `Symfony` ? - L'utilitaire `~/.local/bin/symfony` est un wrapper vers les commandes `composer`, `php`, et la console `Symfony` de votre projet qui se trouve `tp1/bin/console`. Aussi, avec le même `~/.local/bin/symfony`, la console `Symfony` sera celle de votre projet et montrer la version choisie. ## Création de votre premier controlleur 4. Utilisez la console `Symfony` pour créer un controlleur que vous appellerez `BitcoinController`. Quels sont les fichiers crées par `Symfony` ? Observez leur contenu. 5. Quelle route mène à ce controlleur ? Trouvez la réponse dans le fichier du controlleur, puis validez avec la commande de debug des routes dans le console `Symfony` (voir `symfony console debug -h` si besoin). Quelle commande avez-vous utilisé ? 6. Nous allons récupérer des informations provenant d'une API externe donne le cours du bitcoin et l'afficher. Modifiez le controlleur existant pour qu'il fasse un appel à l'une des API externes suivantes avec une requête GET. Pour cela, utilisez le module [`http_client`](https://symfony.com/doc/current/http_client.html) de `Symfony`: - https://api.coincap.io/v2/assets/bitcoin - https://api.coingecko.com/api/v3/coins/bitcoin - https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/btc.json - **Attention! Toute la salle de TP partage la même IP donc pour éviter les quotas sur l'API, merci de rester raisonables sur les requêtes faites.** - En dernier recours : https://sancy.iut.uca.fr/~puys/btc.json ```php // Rappels pour lire un fichier JSON en PHP $path = 'var/twoks_db.json'; $jsonString = file_get_contents($path); $jsonData = json_decode($jsonString, true); var_dump($jsonData); // Rappels pour écrire un fichier JSON en PHP $path = 'new-file.json'; $jsonString = json_encode($jsonData, JSON_PRETTY_PRINT); file_put_contents($path, $jsonString); ``` 7. Modifiez ensuite le template `Twig` crée par la console `Symfony` pour qu'il prenne en entrée un nom de cryptomonaie et une valeur et les affiche: ```twig
Date: {{ "now"|date("Y-m-d H:i:s") }}
{{ symbol }} : {{ value }}