猿问

如何通过保持 WordPress 命名约定来处理 Composer 自动加载?

我有点困惑,因为我正在使用 Composer 为 WordPress 编写一个插件,因为这是真正的方法。


所以我在我的插件和其他一些东西中创建了一个作曲家文件。在作曲家文件中,我添加了用于自动加载的命名空间:


"autoload": {

  "psr-4": {

    "Johnny\\Lolkick\\": [

      "includes/classes/"

    ]

  }

}

在我的类文件夹中,我现在创建了一个名为 的类class-main.php。由于 WordPress 命名约定,我决定采用此名称:


https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#naming-conventions


该类本身被命名为class Main {. 在我的基本插件文件中,我现在创建了一个失败的类的新实例。更改文件名后就Main.php可以了。


因此,WordPress 的命名约定破坏了 Composer 的自动加载。我现在想知道你如何处理这个问题?我应该如何使用 Composer 来保持命名约定?


胡说叔叔
浏览 98回答 1
1回答

尚方宝剑之说

由于您的代码库与PSR-4 自动加载不兼容,因此您注意到,composer.json 的自动加载部分中的psr-4映射将不起作用。我想说你在这里有两个选择:第一个是使用classmap:{    "autoload": {        "classmap": ["includes/classes/"]    }}这将简单地递归解析该文件夹中的所有文件并将类映射到它们的名称,无论您遵循什么命名方案。第二个是构建您自己的自动加载器,并使用files它自动加载:{     "autoload": {         "files": ["includes/autoloader.php"]     } }该自动加载器必须定义在引用给定的类名时应该发生什么(应该加载哪个类,或者不加载哪个类)。在这两种情况下,不要忘记composer dump-autoload事后跑步。
随时随地看视频慕课网APP
我要回答