Récupérer des variables PHP depuis un include

Publié le 25/07/2020 • Mis à jour le 25/07/2020


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

Dans ce bout de code nous allons voir comment récupérer des variables PHP depuis une inclusion (🇬🇧 include). Ici, on affecte la valeur de retour de cette inclusion à la variable $deployClass, donc le fichier utilisé doit retourner quelque chose. Dans ce cas, le fichier deploy.php, qui est utilisé pour déployer ce site web sur mon VPS retourne return new class extends DefaultDeployer. Vous pouvez trouver le contenu complet de ce fichier dans ce snippet.


<?php declare(strict_types=1);

// src/Controller/Snippet/Snippet105Trait.php

namespace App\Controller\Snippet;

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 KernelInterface $kernel
 */
trait Snippet105Trait
{
    public function snippet105(): void
    {
        $deployClass = include $this->kernel->getProjectDir().'/config/prod/deploy.php';

        echo get_parent_class($deployClass); // 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  Plus sur le web

<?php declare(strict_types=1);

namespace App\Tests\Controller\Snippets;

use EasyCorp\Bundle\EasyDeployBundle\Deployer\DefaultDeployer;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;

/**
 * @covers Snippet105Trait
 */
final class Snippet105Test extends KernelTestCase
{
    protected function setUp(): void
    {
        self::bootKernel();
    }

    /**
     * @covers Snippet105Trait::snippet105
     */
    public function testSnippet105(): void
    {
        $deployClass = include self::$kernel->getProjectDir().'/config/prod/deploy.php';
        self::assertInstanceOf(DefaultDeployer::class, $deployClass);
    }
}