事件处理-如何从包中获取composer.json



我想通过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:的描述文本

The "Symfony Standard Edition" distribution

但我想要的是包的描述文本(这是轮询捆绑包)。

所以我的问题是:我该如何得到它?

我假设您现在已注册到post-install事件。这只适用于根包。您应该改为注册post-package-install事件。

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

use ComposerScriptPackageEvent;
class YourInstaller
{
    public static function postPackageUpdate(PackageEvent $event)
    {
        $packageName = $event->getOperation()->getPackage()->getName();
        // ... do something great
    }
}

相关内容

  • 没有找到相关文章

最新更新