如何从包中获取composer.json

时间:2014-04-23 08:28:31

标签: json event-handling package composer-php

我想在composer上加载一个包。

我在包的根级别创建了 composer.json 。看起来像这样:

{
"name": "platform/pollbundle",
"description": {
  "text" :   "This is the poll bundle"
},
"type": "symfony-bundle",
"authors": [
    {
        "name": "NAME",
        "email": "EMAIL"
    }
],
"autoload": {
    "psr-0": {
        "Platform\\Bundle\\PollBundle": ""
    }
},
"extra": {
    "servicePath": "odwawdadwa",
    "branch-alias": {
        "dev-master": "0.1.x-dev"
    }
}

}

为了处理数据,我开始编写一个调用此函数的脚本处理程序:

$event->getComposer()->getPackage()->getDescription();

安装后当然。此函数的输出是来自项目 composer.json description 文本:

The "Symfony Standard Edition" distribution

但我想要的是包的 description 文本(这是民意调查包)。

所以我的问题是:我怎么得到它?

1 个答案:

答案 0 :(得分:1)

我假设您现在已注册post-install事件。这仅适用于根包。您应该注册参加post-package-install活动。

使用此事件,您将获得一个PackageEvent实例,该实例可让您访问当前操作(使用PackageEvent#getOperation())。该操作包含当前安装的包:

use Composer\Script\PackageEvent;

class YourInstaller
{
    public static function postPackageUpdate(PackageEvent $event)
    {
        $packageName = $event->getOperation()->getPackage()->getName();

        // ... do something great
    }
}