teewurst/psr4-advanced-wildcard-composer-plugin

添加解析器以启用 composer 使用通配符

v3.0.1 2022-03-16 10:12 UTC

This package is auto-updated.

Last update: 2024-08-29 23:03:52 UTC


README

添加解析器以启用 composer 使用通配符

codecov

安装方法

现在我们可以使用 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 testcomposer analyse 来执行