微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 为什么在WordPress插件的类中使用$this会导致致命错误?

我正在编写一个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;
}

原文地址:https://www.jb51.cc/php/135174.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐