Vérifier si le mode debug de Symfony est activé

Publié le 22/07/2019 • Mis à jour le 22/07/2019

English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧

Il est parfois utile de savoir si le mode debug de Symfony (généralement avec la fameuse bar de debug) est activé. Par exemple, quand on fait un traitement en masse, s'il est activé, on préférera traiter quelques lignes plutôt que la totalité de la table. Pour récupérer cet indicateur, vous avez besoin de récupérer l'instance du noyau Symfony (kernel) puis d'appeler la function isDebug.


<?php declare(strict_types=1);

namespace App\Controller\Snippet;

use App\Entity\ArticleRepository;
use Symfony\Component\HttpKernel\KernelInterface;

/**
 * J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
 * Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
 * ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
 * Les services sont injectés dans le constructeur du contrôleur principal.
 *
 * @property ArticleRepository $articleRepo
 * @property KernelInterface   $kernel
 */
trait Snippet33Trait
{
    public function snippet33(): void
    {
        echo $this->kernel->isDebug() ? 'Debug is ✅' : 'Debug is ❌';

        $maxToProcess = $this->kernel->isDebug() ? 2 : null; // null in this context means to maximum
        $snippets = $this->articleRepo->findSnippetsForLang('en', null, $maxToProcess);

        echo PHP_EOL.sprintf('%d snippets to process! 🏭', count($snippets));

        // That's it! 😁
    }
}

 Exécuter le snippet  Plus sur Stackoverflow   Lire la doc