繁体   English   中英

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

[英]How to handle autoloading with composer by keeping the WordPress naming conventions?

我有点困惑,因为我正在使用 composer 为 WordPress 编写插件,因为它是 go 的真正方法。

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

"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 本身被命名为class Main { . 在我的基本插件文件中,我现在创建了一个失败的 class 的新实例。 将文件名更改为Main.php后,它起作用了。

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

由于您的代码库与PSR-4 autoloading不兼容,因此您的 composer.json 的 autoload 部分中的psr-4映射将不起作用,正如您所注意到的。

我想说你有两个选择:

第一个是使用classmap

{
    "autoload": {
        "classmap": ["includes/classes/"]
    }
}

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

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

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

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

在这两种情况下,不要忘记之后运行composer dump-autoload

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM