从 composer.json [Symfony] 获取版本

Man*_*olo 3 symfony composer-php

我想知道是否有办法composer.json从带有 Symfony 的控制器获取版本。我的composer.json样子:

{
    "name": "myProject",
    "version": "0.0.0",
    "description": "myProject description",
    "license": "AGPL-3.0",
    "type": "project",
    "require": {
        "php": "^7.1.3",
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我找不到任何对此的参考。

PS:我正在使用 Symfony 4。

dbr*_*ann 5

你可以这样做:

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

$version = $composerData['version'];
Run Code Online (Sandbox Code Playgroud)

然后该变量应包含示例中的值0.0.0

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


Edi*_*rić 2

您可以使用PackageVersions库及其相关PrettyPackageVersions

它们提供单个类 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');
Run Code Online (Sandbox Code Playgroud)