Getting Started with Symfony 5 🚀

Les liens :

Les étapes de l’installation de Symfony sont disponible dans la Documentation - Setup Symfony.

Installation simple

Création d’un projet Symfony

composer create-project symfony/skeleton tp-symfony

ou

symfony new tp-symfony

Il existe aussi une version “website” du skeleton qui contient davantage de paquets et qui est plus adapté au développement de site web (connexion à la base de données, templating, debug, etc).

Mais nous allons nous en passer pour l’instant.

Lancement du Serveur

  1. DĂ©placez vous dans le dossier du projet avec cd tp-symfony.
  2. Exécutez la commande symfony server:start pour lancer le serveur interne de PHP.
  3. Lancer sur votre navigateur la page localhost:8000

Création d’un repository git

Symfony génère pour vous un fichier .gitignore qui permet d’ignorer les fichiers qui ne doivent pas se retrouver sur git.

Ajoutez la ligne .idea dans ce fichier pour ignorer les fichiers générés par PHPStorm.

Créez un repository sur Github ou Gitlab.

Suivez les instructions pour configurer le remote et pousser votre premier commit.

Vous pousserez par la suite régulièrement (au moins une fois par demi-journée et à chaque fin de chapitre).

Création de notre première page

Nous allons créer une simple page qui affiche un nombre aléatoire.

Créez le fichier src/Controller/LuckyController.php avec ce contenu

<?php
// src/Controller/LuckyController.php
namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

class LuckyController
{
    public function number(): Response
    {
        $number = random_int(0, 100);

        return new Response(
            "<html><body><p>Lucky number: $number</p></body></html>"
        );
    }
}

Ici, nous avons une fonction qui génère un nombre entre 0 et 100 et retourne un objet Response contenant du HTML.

Le but est maintenant de faire en sorte de transformer ça en une page, accessible depuis notre navigateur.

Pour cela, ajoutez le code suivant dans config/routes.yaml

# config/routes.yaml

app_lucky_number:
    path: /lucky_number
    controller: App\Controller\LuckyController::number

Vous pouvez maintenant accéder à votre page à l’adresse http://localhost:8000/lucky_number !

On vient ici de créer une route nommée app_lucky_number, qui associe le chemin /lucky_number à la méthode number de la classe App\Controller\LuckyController.

Le nom nous sera utile pour plus tard 🙂

Annotations

Il y a une autre façon de configurer les routes, qui est souvent préférée à la configuration en YAML.

Ce sont les annotations, pour pouvoir les utiliser, lancez la commande suivante

composer require annotations

Supprimez maintenant ce que vous aviez ajouté dans config/routes.yaml

    # config/routes.yaml
    
-   app_lucky_number:
-       path: /lucky_number
-       controller: App\Controller\LuckyController::number

Et ajoutez la configutration suivante dans votre controller

    <?php
    // src/Controller/LuckyController.php
    namespace App\Controller;
    
    use Symfony\Component\HttpFoundation\Response;
+   use Symfony\Component\Routing\Annotation\Route;
    
    class LuckyController
    {
+       /**
+        * @Route("/lucky_number", name="app_lucky_number")
+        */
        public function number(): Response
        {
            $number = random_int(0, 100);
    
            return new Response(
                "<html><body><p>Lucky number: $number</p></body></html>"
            );
        }
    }

Maintenant, actualisez la page. Normalement rien n’a changé.

L’avantage des annotations, c’est que la configuration est au plus près du code en question ce qui rend le projet plus facilement compréhensible.

DĂ©finition

  1. Flex
  2. Liste des recettes
  3. Recettes officielles
  4. Recettes contrib

Debug Bar

Installez le Profiler Symfony. C’est un outil permettant d’avoir beaucoup de détails lors du développement afin de pouvoir facilement débugger et comprendre l’origine d’un bug ou d’une erreur.

Pour l’installer :

composer require debug

Actualiser la page. Une barre devrait maintenant apparaître en bas de la page avec différentes informations (temps d’exécution, temps de rendu, logs, etc)

En cliquant sur un élément de la barre de debug, on arrive sur la page de détails du Profiler.

Observez la barre de debug et naviguez dans les différents onglets du Profiler. Au fur et à mesure que nous installerons de nouveaux packages, nous verrons de nouvelles options apparaître.

Une fonction utile pour le debug est dump(), elle est fournie avec le debug pack installé précédemment.

Dans votre controller ajoutez

$user = [
    'name' => 'John Doe',
    'place' => 'Lens',
];

dump($user);

En actualisant la page, un symbole “Cible” devrait apparaître dans la barre et en passant le curseur dessus, vous devriez voir le contenu de la variable $user.

Installation et Configuration du Plugin Symfony pour PHPStorm

Le plugin symfony pour PHPStorm permettra à notre IDE de reconnaître toutes les fonctionnalités de Symfony.

Pour l’installer, rendez-vous dans Settings > Plugins puis Marketplace et cherchez un plugin nommé Symfony Support et installez-le.

Dans File > Settings > PHP > Symfony

Cocher la case Enable for this project et mettre src pour App Directory et public pour Web Directory.

L’objet Request

Nous allons maintenant voir comment récupérer certaines informations de la requête HTTP.

Changer le code de votre controller pour ajouter un import de l’objet Request

+   use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\Routing\Annotation\Route;

Puis changez la signature de la méthode lucky

-        public function number(): Response
+        public function number(Request $request): Response

Symfony va automatiquement comprendre que vous souhaitez récupérer la requête.

Par exemple, si l’utilisateur accès à l’UR http://localhost:8000/lucky_number?name=John, on aimerait pouvoir récupérer le paramètre name présent dans la Query String

Avec Request, il est possible de le faire comme ceci $name = $request->query->get('name').

Modifiez votre code pour afficher le paramètre name sur la page.

Découvrir l’Architecture de Symfony 5

Doc de Référence : https://symfony.com/doc/current/page_creation.html#checking-out-the-project-structure

Liens utiles

Votre plus grande alliée est la documentation offcielle de Symfony.