如何解决如何通过保持WordPress命名约定来使用composer处理自动加载?
我有点困惑,因为我正在使用composer为WordPress编程一个插件,因为这是真正的方法。
因此,我在插件和其他一些东西中创建了一个作曲家文件。在composer文件中,我添加了用于自动加载的名称空间:
"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的自动加载功能。我现在想知道您如何处理这个问题?我应该如何使用作曲家来保持命名约定?
解决方法
由于您的代码库与PSR-4 autoloading不兼容,因此您注意到,在composer.json的autoload部分中的psr-4映射将不起作用。
我想在这里您有两个选择:
第一个方法是改为使用classmap
:
{
"autoload": {
"classmap": ["includes/classes/"]
}
}
这将简单地递归地解析该文件夹中的所有文件,并将类映射到它们的名称,而不管您采用哪种命名方案。
第二个是构建自己的自动加载器,并使用files
使其自动加载:
{
"autoload": {
"files": ["includes/autoloader.php"]
}
}
当引用给定的类名时,该自动加载器必须定义应该发生什么(应该加载哪个类)。
在两种情况下,请不要忘记之后再运行composer dump-autoload
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。