Composer,以编程方式读取包版本号

use*_*347 2 composer-php

对于基于 Symfony 的控制台应用程序,我需要以编程方式从它的 Composer 文件(不是分支别名)中读取它的版本号。

手动,我可以使用 来composer show -s获取根包信息,但似乎没有任何命令来获取我的包的干净版本。

目的是在运行应用程序时自动显示已安装的软件包版本,而无需处理 *.txt 文件或其他包含语义版本号的基于文件的方式。

遗憾的是我不熟悉作曲家的架构,所以我不知道可以使用哪些组件来实现这一目标。

任何想法或者可能已经制作好的解决方案都是受欢迎的。

小智 5

在您的项目中安装 Composer

composer require composer/composer --dev
Run Code Online (Sandbox Code Playgroud)

示例.php

<?php
// Include Composer Autoload
require __DIR__ . '/vendor/autoload.php';

use Composer\Factory;
use Composer\IO\NullIO;

$composer = Factory::create(new NullIo(), './composer.json', false);
$localRepo = $composer->getRepositoryManager()->getLocalRepository();

foreach ($localRepo->getPackages() as $package) {
    echo $package->getName() . PHP_EOL;
    echo $package->getVersion() . PHP_EOL;
    echo $package->getType() . PHP_EOL;
    // ...
}
Run Code Online (Sandbox Code Playgroud)