我正在编写一个WordPress插件,它会创建一个管理区域的页面,并执行一些前端代码。
下面的代码会抛出一个很好的“Fatal error: Using $this when not in object context”错误。这相当令人困惑,因为变量在类内部被调用。
也许我没有按照预期的WordPress插件结构来编写函数和类,但是下面的概念代码是使用WordPress Codex中有关插件开发的相关条目创建的。
有人能解释一下为什么会触发此错误吗?因为当我在WordPress代码库之外创建类的实例时,一切都很好。
下面的代码会抛出一个很好的“Fatal error: Using $this when not in object context”错误。这相当令人困惑,因为变量在类内部被调用。
也许我没有按照预期的WordPress插件结构来编写函数和类,但是下面的概念代码是使用WordPress Codex中有关插件开发的相关条目创建的。
有人能解释一下为什么会触发此错误吗?因为当我在WordPress代码库之外创建类的实例时,一切都很好。
if (!class_exists("MyClass")) {
class MyClass {
var $test = 'Test variable';
public function index() {
//Index code
}
public function add() {
echo $this->test;
}
}
}
add_action('admin_menu', 'my_plugin_menu');
function my_plugin_menu() {
add_menu_page('My Plugin', 'My Plugin', 'manage_options', 'my-plugin', array('MyClass', 'index'));
add_submenu_page('my-plugin', 'Add New Thing', 'Add New', 'manage_options', 'my-plugin-add', array('MyClass', 'add'));
}
add_action('admin_menu', 'my_plugin_menu');
更改为add_action('admin_menu', array($this, 'my_plugin_menu'));
。 - Ari