yiisoft/composer-config-plugin

此包已被废弃,不再维护。未建议替代包。

Composer 配置组装插件

赞助包维护!
Open Collective
yiisoft

安装次数: 80,908

依赖者: 38

建议者: 0

安全: 0

星标: 30

关注者: 9

分支: 14

开放问题: 19

类型:composer-plugin

0.6.0 2021-03-24 17:33 UTC

README

logo.png

Composer Config Plugin


Composer 配置组装插件。

⚠️ 该插件不再受支持,建议使用 yiisoft/config

Latest Stable Version Total Downloads Build status Scrutinizer Code Quality Code Coverage

Composer 插件提供与 composer 包一起分发的配置的组装。它允许将使用包所需的配置直接放在包中,从而实现插件系统。包变成了一个包含代码和其配置的插件。

文档

如何工作?

  • 扫描已安装包中的 config-plugin 额外选项在他们的 composer.json 中。
  • 加载 .env 文件以设置 $_ENV 变量。
  • 需要 constants 文件以设置常量。
  • 需要 params 文件。
  • 需要配置文件。
  • 在早期步骤中收集的选项可以和应该用于后续步骤,例如 $_ENV 应用于常量和参数,反过来应应用于配置。
  • 文件处理顺序对于实现预期行为至关重要:根包中的选项具有比包含包中的选项更高的优先级。在下面的 文件处理顺序 部分进行了描述。
  • 收集的配置被写入 vendor/yiisoft/composer-config-plugin-output 目录中的 PHP 文件,并包含在需要时重新构建配置所需的信息。
  • 然后组装好的配置可以准备好通过 require 加载到应用程序中。

英文俄语 中了解更多关于此插件背后的总体思路。

安装

composer require "yiisoft/composer-config-plugin"

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

要启用其他格式,需要

用法

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

"extra": {
    "config-plugin-output-dir": "path/relative-to-composer-json",
    "config-plugin": {
        "envs": "db.env",
        "params": [
            "config/params.php",
            "?config/params-local.php"
        ],
        "common": "config/common.php",
        "web": [
            "$common",
            "config/web.php"
            "../src/Modules/*/config/web.php"
        ],
        "other": "config/other.php"
    }
},

标记

  • ? - 标记可选文件。未标记该文件的文件不存在将导致异常。

    "params": [
       "params.php",
       "?params-local.php"
    ]
    

    如果找不到 params-local.php,这是可以的,但如果找不到 params.php,则是不允许的。

  • * - 表示通配符路径。这意味着可以通过通配符掩码匹配零个或多个匹配项。

    "web": [
       "../src/Modules/*/config/web.php"
    ]
    

    它将收集 config 文件夹中任何子文件夹中的 src/Modules/ 下的所有 web.php 文件。

  • $ - 对另一个配置的引用。

    "params": [
       "params.php",
       "?params-local.php"
    ],
    "params-console": [
       "$params",
       "params-console.php"
    ],
    "params-web": [
       "$params",
       "params-web.php"
    ]
    

    输出文件 params-console.phpparams-web.php 将包含 params.phpparams-local.php

请按照以下方式定义您的配置

<?php

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

一个特殊的变量 $paramsparams 配置中读取。

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

$config = require Yiisoft\Composer\Config\Builder::path('web');

使用子配置

在某些情况下,将配置的一部分提取到另一个文件中可能更方便。例如,我们想将数据库配置提取到 db.php 中。为此,将配置添加到 composer.json

"extra": {
    "config-plugin-output-dir": "path/relative-to-composer-json",
    "config-plugin": {
        "envs": "db.env",
        "params": [
            "config/params.php",
            "?config/params-local.php"
        ],
        "common": "config/common.php",
        "web": [
            "$common",
            "config/web.php"
        ],
        "other": "config/other.php",
        "db": "config/db.php"
    }
},

创建 db.php

<?php

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

然后在配置中使用 Builder::require()

<?php

use Yiisoft\Composer\Config\Builder;

return [
    'components' => [
        'db' => Builder::require('db'),
    ],
];

刷新配置

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

当您对任何配置进行更改时,您可能希望手动重新组装配置。为此,请运行

composer dump-autoload

上述命令可以缩短为 composer du

如果您需要从您的应用程序中强制重新构建配置,您可以这样做

// Don't do it in production, assembling takes it's time
if (getenv('APP_ENV') === 'dev') {
    Yiisoft\Composer\Config\Builder::rebuild();
}

文件处理顺序

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

  • 外部包中的选项覆盖内部包中的选项。
  • 插件尊重您在 composer.json 中列出的配置顺序。
  • 不同类型的选项按以下顺序处理
    • 来自 envs 的环境变量。
    • 来自 constants 的常量。
    • 来自 params 的参数。
    • 配置最后处理。

调试

有几个方法可以调试配置构建的内部结构。

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

上述命令可以缩短为 composer du -v

  • 您可以在默认的输出目录中看到组装好的配置,该目录为 vendor/yiisoft/composer-config-plugin-output,并且可以通过 composer.json 中的 config-plugin-output-dir 附加选项进行配置。

已知问题

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

许可协议

本项目根据 BSD-3-Clause 许可协议发布。更多信息请参阅 此处

版权所有 © 2016-2020,HiQDev (http://hiqdev.com/) 版权所有 © 2020,Yiisoft (https://yiiframework.cn/)