Récupérer des variables PHP depuis un include
Publié le 25/07/2020 • Actualisé le 25/07/2020
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);
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
{
/** @noinspection UsingInclusionReturnValueInspection */
$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\Integration\Controller\Snippets;
use EasyCorp\Bundle\EasyDeployBundle\Deployer\DefaultDeployer;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
/**
* @see Snippet105Trait
*/
final class Snippet105Test extends KernelTestCase
{
/**
* @see Snippet105Trait::snippet105
*/
public function testSnippet105(): void
{
self::bootKernel();
$deployClass = include self::$kernel->getProjectDir().'/config/prod/deploy.php';
self::assertInstanceOf(DefaultDeployer::class, $deployClass);
}
}
A vous de jouer !
Ces articles vous ont été utiles ? Vous pouvez m'aider à votre tour de plusieurs manières : (cliquez sur le lien "reply" dans à droite pour me contacter )
- Me remonter des erreurs ou typos.
- Me remonter des choses qui pourraient être améliorées.
- Aimez et repostez !
- Suivez moi sur Bluesky 🦋
- Inscrivez-vous au flux RSS.
- Cliquez sur les boutons Plus sur Stackoverflow pour me faire gagner des badges "annonceur" 🏅.
Merci et à très bientôt sur Strangebuzz ! 😉