Récupérer les versions de Symfony et PHP de l'environnement courant
Publié le 15/01/2019 • Actualisé le 15/01/2019
Il est parfois utile d'avoir ces informations. Dans ce projet par exemple, elles sont affichées pour vous montrer l'environnement sur lequel est exécuté le code pour que vous puissiez comparer avec le vôtre. Ça permet d'éviter d'utiliser du code en dur mais aussi d'être à jour automatiquement en cas de mise à jour composer ou du système.
<?php declare(strict_types=1);
namespace App\Twig\Extension;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpKernel\Kernel;
/**
* Server environment related stuff.
*/
class EnvExtension extends \Twig_Extension implements \Twig_Extension_GlobalsInterface
{
public function getGlobals(): array
{
$phpVersion = PHP_VERSION;
$parts = explode('.', $phpVersion);
$phpMinorVersion = $parts[0].'.'.$parts[1];
$phpVersion = $phpMinorVersion.'.'.explode('-', $parts[2])[0] ?? '';
$sfVersion = Kernel::VERSION;
$sfVersionInfos = explode('.', Kernel::VERSION);
$globals = [
'php_version' => $phpVersion,
'php_minor_version' => $phpMinorVersion,
'sf_version' => $sfVersion,
'sf_minor_version' => $sfVersionInfos[0].'.'.$sfVersionInfos[1],
];
return $globals;
}
}
En bonus, le snippet permettant d'utiliser ce code : 🎉<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
use App\Twig\Extension\EnvExtension;
/**
* 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 EnvExtension $envExtension
*/
trait Snippet12Trait
{
public function snippet12(): void
{
print_r($this->envExtension->getGlobals()); // That's it! 😁
}
}
Exécuter le snippet ≪ this.showUnitTest ? this.trans.hide_unit_test : this.trans.show_unit_test ≫ Plus sur Stackoverflow Snippet aléatoire
<?php
declare(strict_types=1);
namespace App\Tests\Integration\Controller\Snippets;
use App\Twig\Extension\EnvExtension;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
/**
* @see Snippet12Trait
*/
final class Snippet12Test extends KernelTestCase
{
private EnvExtension $envExtension;
protected function setUp(): void
{
$this->envExtension = self::getContainer()->get(EnvExtension::class);
}
/**
* @see Snippet12Trait::snippet12
*/
public function testSnippet12(): void
{
$globals = $this->envExtension->getGlobals();
self::assertArrayHasKey('php_version', $globals);
self::assertArrayHasKey('php_minor_version', $globals);
self::assertArrayHasKey('sf_version', $globals);
self::assertArrayHasKey('sf_minor_version', $globals);
}
}