jimchen/composer-config-plugin

该包已被弃用且不再维护。作者建议使用 yiisoft/composer-config-plugin 包。

Composer 配置组装插件

v0.3.0 2019-06-11 05:46 UTC

This package is auto-updated.

Last update: 2020-10-12 07:02:55 UTC


README

logo.png

Composer Config Plugin


Composer 配置组装插件。由 https://github.com/hiqdev/composer-config-plugin 分支而来

Latest Stable Version Build Status Scrutinizer Code Coverage Scrutinizer Code Quality

Composer 插件提供组装 composer 包中分布的配置。它允许将使用包所需的配置直接放在包内部,从而实现插件系统。该包成为一个同时包含代码和配置的插件。

它是如何工作的?

  • 扫描已安装的包中的 config-plugin 附加选项,在它们的 composer.json 文件中
  • 加载 .env 文件以设置 $_ENV 变量
  • 需要 defines 文件以设置常量
  • 需要 params 文件
  • 需要配置文件
  • 在早期步骤中收集的选项可以在后续步骤中使用,例如,$_ENV 应用于常量和参数,反过来应应用于配置
  • 文件处理顺序对于实现预期行为至关重要:根包中的选项优先于包含包中的选项。在下面的 文件处理顺序 部分进行了描述。
  • 收集的配置被写入到 vendor/hiqdev/composer-config-plugin-output 目录中,并附带重建配置所需的信息
  • 然后组装的配置就可以通过 require 加载到应用程序中了

英文俄语 中了解更多关于此插件背后的通用思想。

需求

  • PHP >= 5.5
  • Composer

注意:如果您的 PHP 版本大于或等于 7.0,请使用 hiqdev/composer-config-plugin

安装

composer require "jimchen/composer-config-plugin"

默认情况下,此插件支持 PHP 和 JSON 格式的配置。

要启用其他格式,需要

使用方法

composer.json 中列出您的配置文件,如下所示

"extra": {
    "config-plugin": {
        "params": [
            "config/params.php",
            "?config/params-local.php"
        ],
        "common": "config/common.php",
        "web": [
            "$common",
            "config/web.php"
        ],
        "other": "config/other.php"
    }
},

? 标记为可选文件。没有标记为它的文件的缺失将导致异常。

$common 是包含 - common 配置将被合并到 web

定义您的配置如下

return [
    'components' => [
        'db' => [
            'class' => \my\Db::class,
            'name' => $params['db.name'],
            'password' => $params['db.password'],
        ],
    ],
];

要加载组装的配置到您的应用程序中,请使用 require

$config = require hiqdev\composer\config\Builder::pathHasDefault('web', __DIR__ . '/../web.php');

刷新配置

插件使用 composer POST_AUTOLOAD_DUMP 事件,即 composer 在 installupdatedump-autoload 命令时运行此插件。因此,配置在包安装或更新后即可使用。

当您对任何配置文件进行更改时,可能需要手动重新组装配置。为了执行此操作,请运行

composer dump-autoload

上述命令可以简化为 composer du

如果您需要从应用程序强制重新构建配置,可以按照以下方式操作

// Don't do it in production, assembling takes it's time
if (ENVIRONMENT === 'dev') {
    hiqdev\composer\config\Builder::rebuild();
}

文件处理顺序

配置文件按照适当的顺序处理,以实现自然预期的行为

  • 外部包中的选项会覆盖内部包中的选项
  • 插件会按照 composer.json 中配置的顺序尊重配置
  • 不同类型的选项按照以下顺序处理
    • dotenv 的环境变量
    • defines 中的常量
    • params 中的参数
    • 最后处理配置文件

调试

有多种方法可以调试配置构建的内部机制。

  • 通过运行以下命令,插件可以显示检测到的包依赖关系层次结构
composer dump-autoload --verbose

上述命令可以简化为 composer du -v

  • 您可以看到插件已检测到的配置和文件列表,这些配置和文件用于构建配置。它位于 vendor/hiqdev/composer-config-plugin/output/__files.php

  • 您可以在 vendor/hiqdev/composer-config-plugin-output 目录中查看组装好的配置。

已知问题

此插件将配置视为简单的PHP数组。不期望或处理任何特定的结构或语义。它简单直接,但我怀疑... 错误和拼写错误怎么办?我考虑添加与插件一起提供的配置验证规则。这能解决所有问题吗?

匿名函数必须以多行形式使用

return [
    'works' => function () {
        return 'value';
    },
    // this will not work
    'noway' => function () { return 'value'; },
];

许可证

此项目在 BSD-3-Clause 许可证的条款下发布。[许可证链接](https://github.com/JimChenWYU/composer-config-plugin/blob/HEAD/LICENSE)。更多信息请参阅[这里](http://choosealicense.com/licenses/bsd-3-clause)。

版权所有 © 2016-2018,Jim Chen