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

时间:2016-08-21 11:49:46

标签: composer-php

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

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

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

可悲的是,我对作曲家的架构并不熟悉,所以我不知道我可以使用哪些组件来实现这一点。

任何想法或者已经制作的包都可以解决。

2 个答案:

答案 0 :(得分:2)

我知道它有点迟到但你可以从作曲家写的JSON文件中读取信息。

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

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

This包做了一些什么。

答案 1 :(得分:2)

在项目中安装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;
    // ...
}