我的源文件是这样开始的:
<?php
/**
* @package JpLists
*/
namespace Inc\Pages;
use WP_List_Table;
class ListTable extends WP_List_Table {
当我尝试扩展标准 WordPress 类时,我最终在浏览器中遇到以下错误:
Fatal error: Class 'WP_List_Table' not found in /srv/www/wordpress/wp-content/plugins/jpLists/inc/Pages/ListTable.php on line 9
This post suggests Composer + WordPress plugins is a bad idea
我正准备认输并回到硬编码的 require_once() 调用,但命名空间和自动加载的想法吸引了我。
我的composer.json 文件如下所示:
{
"name": "jp/jp-lists",
"description": "WordPress plugin",
"type": "wordpress-plugin",
"license": "GPL",
"authors": [
{
"name": "JP",
"email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="442e3404213c25293428216a272b29" rel="noreferrer noopener nofollow">[email protected]</a>"
}
],
"minimum-stability": "dev",
"require": {},
"autoload": {
"psr-4":{"Inc\\": "./inc"}
}
}
最佳答案
事实证明,如果您只是在名称前添加“\”,PHP 就会知道您引用的是全局命名空间中的类,而不是文件开头指定的命名空间。
use \WP_List_Table;
我已经放弃了使用命名空间和 Composer 的努力几个月了,但经过对命名空间的一些勤奋研究后,我决定再次解决这个问题,这是一个简单的修复。
关于wordpress - 我正在尝试将 Composer 与 WordPress 插件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52305897/