从composer.json[Symfony]获取版本

从composer.json[Symfony]获取版本,symfony,composer-php,Symfony,Composer Php,我想知道是否有办法从带有Symfony的控制器获得composer.json版本。我的composer.json看起来像: { "name": "myProject", "version": "0.0.0", "description": "myProject description", "license": "AGPL-3.0", "type": "project", "require": { "php": "^7.1.3",

我想知道是否有办法从带有Symfony的控制器获得
composer.json
版本。我的
composer.json
看起来像:

{
    "name": "myProject",
    "version": "0.0.0",
    "description": "myProject description",
    "license": "AGPL-3.0",
    "type": "project",
    "require": {
        "php": "^7.1.3",
        ...
    }
}
我找不到这方面的任何参考资料


注:我正在使用Symfony 4。

您可以这样做:

$filename = $this->getParameter('%app.kernel_dir%') . '/../composer.json';
$composerData = json_decode(file_get_contents($filename), true);

$version = $composerData['version'];
然后,变量应包含示例中的值
0.0.0

这假设您的控制器扩展了基本控制器以访问
%app.kernel\u dir%
参数。如果没有,您也可以使用控制器的相对路径或其他方法来确定composer的位置。json可以使用库及其相对路径

它们提供单个类API以获取当前安装的Composer依赖项版本,例如:

use PackageVersions\Versions;
use Jean85\PrettyVersions;

// Will output "1.0.0@0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"
echo Versions::getVersion('myvendor/mypackage');

// Will output "1.0.0"
echo (string) PrettyVersions::getVersion('myvendor/mypackage');

如果没有软件包,使用Composer,您可以使用
$version=\Composer\InstalledVersions::getPrettyVersion('package/package name')
RefferingSalam答案,您还可以通过以下方式获得自己的项目(在Composer world中名为
根软件包
)版本存储在
Composer.json

$version = \Composer\InstalledVersions::getRootPackage()['version'];
或更漂亮的印刷品:

$version = \Composer\InstalledVersions::getRootPackage()['pretty_version'];

到目前为止你试过什么?你被困在哪里?通常,这是一个常见的JSON文件,可以像其他文件一样进行解析