Composer php 编写器,以编程方式读取程序包版本号

Composer php 编写器,以编程方式读取程序包版本号,composer-php,Composer Php,对于基于Symfony的控制台应用程序,我需要以编程方式从它的composer文件(而不是分支别名)中读取它的版本号 我可以手动使用composer show-s来获取根包信息,但是似乎没有任何命令来获取包的干净版本 其目的是在运行应用程序时自动显示已安装的软件包版本,而无需处理*.txt文件或其他包含语义版本号的基于文件的方式 遗憾的是,我不熟悉composer的体系结构,所以我不知道可以使用哪些组件来实现这一点 欢迎提出任何解决方案的想法或可能已经制作的软件包。我知道它的回复有点晚,但您可以

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

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

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

遗憾的是,我不熟悉composer的体系结构,所以我不知道可以使用哪些组件来实现这一点


欢迎提出任何解决方案的想法或可能已经制作的软件包。

我知道它的回复有点晚,但您可以从composer编写的JSON文件中读取信息

该文件位于
vendor/composer/installed.json

阅读JSON,解析它,并获取您想要的信息


软件包会做些什么。

在项目中安装Composer

composer require composer/composer --dev
example.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;
    // ...
}

那不是lib。如果你那样加东西,那就太夸张了。这不是“如果它起作用,它就不愚蠢”。