为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
胡说叔叔 2023-10-01 17:00:39
我有点困惑,因为我正在使用 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 来保持命名约定?
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

由于您的代码库与PSR-4 自动加载不兼容,因此您注意到,composer.json 的自动加载部分中的psr-4映射将不起作用。

我想说你在这里有两个选择:

第一个是使用classmap

{

    "autoload": {

        "classmap": ["includes/classes/"]

    }

}

这将简单地递归解析该文件夹中的所有文件并将类映射到它们的名称,无论您遵循什么命名方案。

第二个是构建您自己的自动加载器,并使用files它自动加载:

{  
  "autoload": { 
       "files": ["includes/autoloader.php"]
    }
}

该自动加载器必须定义在引用给定的类名时应该发生什么(应该加载哪个类,或者不加载哪个类)。

在这两种情况下,不要忘记composer dump-autoload事后跑步。


查看完整回答
反对 回复 2023-10-01
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信