Composer 扩展配置
Testing Is Documentation
tests/Option/ComposerOptionTest.php
QueryPHP 系统服务提供者、应用命令、扩展配置和扩展语言包等都在 composer
中进行定义。
Uses
<?php
use Leevel\Option\ComposerOption;
composer.json
示例配置
{
"name": "hunzhiwange/queryphp",
"extra": {
"leevel": {
"providers": [
"Common\\Infra\\Provider\\Event",
"Common\\Infra\\Provider\\Router"
],
"ignores": [
"Leevel\\Notexits\\Provider\\Register"
],
"commands": [
"Common\\App\\Console"
],
"options": {
"demo": "option/extend/test.php"
},
"i18ns": "i18n/extend",
"metas": {
"foo": "bar"
}
}
}
}
相关配置约定在 leevel
字段中,可以非常方便地扩展系统。
public function testBaseUse(): void
{
$options = ($composerOption = new ComposerOption(__DIR__.'/app1'))->loadData();
$data = <<<'eot'
{
"providers": [
"Tests\\Option\\Providers\\Foo",
"Tests\\Option\\Providers\\Bar",
"Demo\\Provider\\Register",
"Common\\Infra\\Provider\\Event",
"Common\\Infra\\Provider\\Router"
],
"ignores": [
"Leevel\\Notexits\\Provider\\Register"
],
"commands": [
"Tests\\Option\\Commands\\Test",
"Tests\\Option\\Commands\\Console",
"Demo\\Demo\\Console",
"Common\\App\\Console"
],
"options": {
"demo": "option\/extend\/test.php"
},
"i18ns": [
"i18n\/extend"
],
"metas": {
"foo": "bar"
}
}
eot;
$this->assertSame(
$data,
$this->varJson(
$options
)
);
$this->assertSame(
$data,
$this->varJson(
$composerOption->loadData()
)
);
}