jimchen / composer-config-plugin
Requires
- php: >=5.5
- composer-plugin-api: ^1.0
Requires (Dev)
- composer/composer: ~1.0@dev
- phpunit/phpunit: ^4.8 || ^5.7 || ^6.5
Suggests
- symfony/yaml: ^2.0 || ^3.0 || ^4.0 for YAML files support
- vlucas/phpdotenv: ^2.0 for `.env` files support
This package is auto-updated.
Last update: 2020-10-12 07:02:55 UTC
README
Composer Config Plugin
Composer 配置组装插件。由 https://github.com/hiqdev/composer-config-plugin 分支而来
此 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 格式的配置。
要启用其他格式,需要
- vlucas/phpdotenv - 用于
.env
文件 - symfony/yaml - 用于 YAML 文件,
.yml
和.yaml
使用方法
在 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 在 install
、update
和 dump-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