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

Publié le 22/07/2019 • Actualisé 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 🇬🇧 Close

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\Repository\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  ≪ this.showUnitTest ? this.trans.hide_unit_test : this.trans.show_unit_test ≫  Plus sur Stackoverflow   Lire la doc  Snippet aléatoire

  Travaillez avec moi !

<?php

declare(strict_types=1);

namespace App\Tests\Integration\Controller\Snippets;

use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;

/**
 * @see Snippet33Trait
 */
final class Snippet33Test extends KernelTestCase
{
    protected function setUp(): void
    {
        self::bootKernel();
    }

    /**
     * @see Snippet33Trait::snippet33
     */
    public function testSnippet33(): void
    {
        self::assertTrue(self::$kernel->isDebug());
    }
}