Récupérer les versions de Symfony et PHP de l'environnement courant

Publié le 15/01/2019 • Mis à jour le 15/01/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 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  Plus sur Stackoverflow