我的源文件开始如下:
<?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": "jp@example.com"
}
],
"minimum-stability": "dev",
"require": {},
"autoload": {
"psr-4":{"Inc\\": "./inc"}
}
}
答案 0 :(得分:0)
事实证明,只要在名称之前添加一个'\',PHP就会知道您是在全局名称空间中引用一个类,而不是在文件开头指定的名称空间。
use \WP_List_Table;
几个月来,我已经放弃了使用命名空间和作曲家的工作,但是在对命名空间进行了一些认真的研究之后,我决定再次解决该问题,这是一个简单的解决方法。
答案 1 :(得分:-1)
请将以下内容添加到composer.json。
[示例:wp-content / plugins / example / src / composer.json]
(typeof props)["car"]["color"]
并生成自动加载文件
"autoload": {
"files": ["../../../../wp-admin/includes/class-wp-list-table.php"]
}
写入类文件
composer dumpautoload
但是我不知道使用ABSPATH方法
我使用Google翻译是因为我不太懂英语。