对于基于Symfony的控制台应用程序,我需要以编程方式从它的编写器文件(不是分支别名)中读取它的版本号。
手动,我可以使用composer show -s
来获取root包信息,但似乎没有任何命令来获取我的包的干净版本。
目的是在运行应用程序时自动显示已安装的软件包版本,而无需处理包含语义版本号的* .txt文件或其他基于文件的方式。
可悲的是,我对作曲家的架构并不熟悉,所以我不知道我可以使用哪些组件来实现这一点。
任何想法或者已经制作的包都可以解决。
答案 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;
// ...
}