从composer.json获取版本[Symfony]

问题描述 投票:1回答:2

我想知道是否有办法从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",
        ...
    }
}

我找不到任何参考。

PS:我正在使用Symfony 4。

symfony composer-php
2个回答
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');

3
投票

你可以这样做:

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

$version = $composerData['version'];

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

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

© www.soinside.com 2019 - 2024. All rights reserved.