teewurst / psr4-advanced-wildcard-composer-plugin
添加解析器以启用 composer 使用通配符
v3.0.1
2022-03-16 10:12 UTC
Requires
- php: ^7.1|^8.0
- composer-plugin-api: ^1.1|^2.0
- ext-json: *
Requires (Dev)
- composer/composer: ^2.0
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^0.12.52
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-08-29 23:03:52 UTC
README
添加解析器以启用 composer 使用通配符
安装方法
现在我们可以使用 composer require teewurst/psr4-advanced-wildcard-composer-plugin
来安装
使用方法
同时使用 glob 和 sprintf 动态替换生成的 autoload 文件的内容
- 在 composer.json 中使用 GLOB 大括号动态定义文件夹(例如:
"/modules/{*Domain,*Module}/{*}/src"
) - 使用 sprintf 的 %s 匹配 GLOB 的查找结果到您的文件路径(例如:
"My\\Namespace\\%s\\%s\\"
) - GLOB 在 Linux/Windows 上是大小写不敏感的
- 您也可以使用参数切换,但这是不推荐的(例如:
"My\\Namespace\\%2$s\\%1$s\\"
) - IDE 无法处理 composer.json 中的高级通配符(文件创建、命名空间自动完成等)
- 如果您以 --dev 模式运行,它将在同一位置生成一个 composer.development.json
- 这是 composer.json 的精确副本,但已解析通配符
- 在您的 composer.json 中有两种配置方法(相当于 autoload-dev)
- (推荐)您将通配符添加到
extra.teewurst/psr4-advanced-wildcard-composer-plugin.autoload.psr-4
(见示例) - 将
extra.teewurst/psr4-advanced-wildcard-composer-plugin
设置为真值,并在默认的autoload.psr-4
中设置您的命名空间
- (推荐)您将通配符添加到
示例
composer.json
{ "extra": { "teewurst/psr4-advanced-wildcard-composer-plugin": { "autoload": { "psr-4": { "My\\Namespace\\%s\\%s\\": "modules/{*Domain,*Module}/{*}/src" } }, "autoload-dev": { "psr-4": { "My\\Namespace\\test\\%s\\": "tests/{*}/src" } } } } }
文件系统
|- composer.json
|- modules
|- BusinessDomain
|- Calculation
|- src
|- Listener
|- src
|- DataModule
|- AWS
|- src
|- Mysql
|- src
|- SomethingElse
AdvancedWildcards + 文件系统是等效的
{ "autoload": { "psr-4": { "My\\Namespace\\BusinessDomain\\Calculation\\": "modules/BusinessDomain/Calculation/src", "My\\Namespace\\BusinessDomain\\Listener\\": "modules/BusinessDomain/Listener/src", "My\\Namespace\\DataModule\\AWS\\": "modules/DataModule/AWS/src", "My\\Namespace\\DataModule\\Mysql\\": "modules/DataModule/Mysql/src" } } }
限制和性能
请注意...
- Glob/IO 和性能?不,不,不... dump-autoload 将花费更长的时间
- 此插件限制在每个命名空间替换中只有一个文件夹级别(哦,它会迅速升级)
- 如果文件夹不存在,您将得到奇怪的结果
贡献
- 在本地创建任何虚拟存储库,设置 composer 并将其添加到 composer.json 中
"repositories": [ { "type": "path", "version": "dev-[branch_name]", "url": "[path_to_local_wildcard_plugin]/psr4-advanced-wildcard-composer-plugin" }, ],
- 在虚拟存储库中,运行
composer require teewurst/psr4-advanced-wildcard-composer-plugin
- 在虚拟存储库中,您可以通过
composer dump-autoload
来执行代码 - 要启用 xDebug,您必须运行
export COMPOSER_ALLOW_XDEBUG=1
(会话 环境变量 = 在每个终端中执行) - 还需要通过
composer test
和composer analyse
来执行