php – 为什么在WordPress插件的类中使用$this会导致致命错误?
发布时间:2020-12-13 18:16:01 所属栏目:PHP教程 来源:网络整理
导读:我正在编写一个Wordpress插件,它在管理区域中创建一个页面,以及执行一些前端代码. 下面的代码抛出一个很好的致命错误:在不在对象上下文错误时使用$this.这是相当神秘的,因为变量在类中被调用. 也许我没有按照预期的Wordpress插件结构来处理函数和类,但下面
我正在编写一个Wordpress插件,它在管理区域中创建一个页面,以及执行一些前端代码.
下面的代码抛出一个很好的致命错误:在不在对象上下文错误时使用$this.这是相当神秘的,因为变量在类中被调用. 也许我没有按照预期的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','my-plugin-add','add')); }
所以,我似乎已经修复了它,回到基础并向Google提出了一个简单的问题:“在Wordpress插件中使用类”.
Jay Fortner的文章和dConstructing.com的文章都很有帮助. 基本上,我现在正在调用类中的add_menu_page和add_submenu_page.我的印象是那些功能以某种方式创建了一个对象,但它们显然没有. 我的代码现在看起来像这样,我能够在没有错误的情况下调用声明的类变量: if (!class_exists("MyClass")) { class MyClass { var $test = 'Test variable'; function __construct() { add_action('admin_menu','my_plugin_menu'); } function my_plugin_menu() { add_menu_page('My Plugin',array(&$this,'index')); add_submenu_page('my-plugin','add')); } public function index() { //Index code } public function add() { echo $this->test; } } new MyClass; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |