如何知道我有哪个版本的 Symfony?

我知道我已经下载了一个 Symfony2项目和开始,但我已经更新了我的供应商几次,我想知道我有哪个版本的 symfony

知道吗?

188455 次浏览

运行 app/console --version(针对 Symfony3: bin/console --version) ,它应该会给你一个非常好的想法。在我的一个随机项目中,结果是:

Symfony version 2.2.0-DEV - app/dev/debug

如果无法访问控制台,请尝试读取 symfony/src/Symfony/Component/HttpKernel/Kernel.php,其中的版本是 硬编码,例如:

const VERSION         = '2.2.0';

如果您想知道的话,console创建了 Symfony\Bundle\FrameworkBundle\Console\Application的一个实例。在这个类构造函数中,它使用 Symfony\Component\HttpKernel\Kernel::VERSION来初始化它的父构造函数。

如果您在 app _ dev 中,您可以在页面的左下角找到 symfony 版本

另一种方法是查看定义 const VERSIONSymfony\Component\HttpKernel\Kernel的源代码

在本地,这将位于 vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php

在 Symfony 项目中,您可以通过以下方式获得 PHP 中的值:

$symfony_version = \Symfony\Component\HttpKernel\Kernel::VERSION;

如果您想在页面中动态显示 Symfony 2版本,例如在页脚中,您可以这样做。

创建服务:

<?php


namespace Project\Bundle\DuBundle\Twig;


class SymfonyVersionExtension extends \Twig_Extension
{




public function getFunctions()
{
return array(
//this is the name of the function you will use in twig
new \Twig_SimpleFunction('symfony_version', array($this, 'b'))
);
}


public function getName()
{
//return 'number_employees';
return 'symfony_version_extension';
}


public function b()
{
$symfony_version = \Symfony\Component\HttpKernel\Kernel::VERSION;
return $symfony_version;
}
}

注册在 service.yml

 dut.twig.symfony_version_extension:
class: Project\Bundle\DutBundle\Twig\SymfonyVersionExtension
tags:
- { name: twig.extension }
#arguments: []

你可以在任何地方调用它,在 Controller 中,用 JSON 或者页面例子页脚来包装它

 <p> Built With Symfony \{\{ symfony_version() }} Version MIT License</p>

现在,每次你运行作曲家更新,以更新您的供应商,symfony 版本也将自动更新在您的模板。我知道这是杀伤力,但这是我如何做到这一点,在我的项目,它是工作。

我们可以找到的 symfony 版本使用 Kernel.php文件,但问题是位置的内核将改变版本(更好地做文件搜索在您的项目目录)

在 symfony 3.0中: My _ project 供应商 Symfony Symfony src Symfony Component HttpKernel.php

检查 Controller/PHP 文件

$symfony_version = \Symfony\Component\HttpKernel\Kernel::VERSION;
echo $symfony_version; // this will return version; **o/p:3.0.4-DEV**

如果您尝试使用 symfony 版本

请试试

Symfony 2 +

Cmd > php app/sole-version

Symfony 3 +

Cmd > php bin/sole-version

比如说

D: project > php bin/sole-version

Symfony 3.2.8 (kernel: app, env: dev, debug: true)

也可以通过运行以下命令检查 symfony 版本和所有其他已安装软件包的版本

composer show

或者

composer show | grep sonata

以获得特定套件的版本,如奏鸣曲等。

为 Symfony 3.4

检查该文件中的常量/symfony/http-kernel/Kernel.php

const VERSION = '3.4.3';

或者

composer show | grep symfony/http-kernel

在终端/命令提示符中使用以下命令:

php bin/console --version

这会给你你的 Symfony 版本。

虽然已经有很多不错的答案,但我还是想添加一个没有提到的选项:

php bin/console about

你可以得到很多关于当前项目的细节。第一部分是关于 Symfony 本身的,看起来像这样:

-------------------- -------------------------------------------
Symfony
-------------------- -------------------------------------------
Version              4.2.3
End of maintenance   07/2019
End of life          01/2020
-------------------- -------------------------------------------

我发现除了版本号之外的其他信息非常有用。

还有其他部分提供了关于(框架)内核、 PHP、环境的详细信息。

也许这里的答案已经过时了... 无论如何,对我来说,运行 Symfony 4很容易 只需在命令行中键入 symfony -V

enter image description here

这个页面是搜索 which version symfony using的谷歌搜索结果的顶部,顶部的答案可能不再起作用了。

显然,在运行了 symfony new aqua_note(来自 SymfonyCast 的推荐)之后,我正在使用 Symfony 5。

我必须最终运行 grep -r VERSION . | grep Kernel才能看到 ./vendor/symfony/http-kernel/Kernel.php: public const VERSION = '5.4.2';... ... 至少我现在认为这是正确的。