PHP,如何将父类数据保存到子类中?

时间:2015-12-03 14:28:55

标签: php wordpress class plugins extends

所以,我终于找到了影响所需功能的方法。

我试图修改的函数包含在一个类中,所以我做了类似的事情:

class my_Check extends Appointments {

   function __construct() {
      $this->unregister_parent_hook();
      add_action( 'wp_ajax_post_confirmation', array( $this, 'post_confirmation' ) );
      add_action( 'wp_ajax_nopriv_post_confirmation', array( $this, 'post_confirmation' ) );
   }

   function unregister_parent_hook() {
      global $appointments;  //this was the object created with the parent class
      remove_action( 'wp_ajax_post_confirmation', array( $appointments, 'post_confirmation' ) );
      remove_action( 'wp_ajax_nopriv_post_confirmation', array( $appointments, 'post_confirmation' ) );
   }

   function post_confirmation() {

        ...do the stuff with my mods...

   }
}

$new_Check = new my_Check();

只是,我现在有一个新问题。父类在__construct()(许多add_action()'s等等中执行了更多操作。$this填充了大量数据。问题是,这些其他的东西和数据似乎没有延续到子类中。我尝试在孩子的parent::__construct()函数中添加__construct(),但这似乎不起作用。

我的mods的代码工作,除了需要从父类继承的$this中的更多数据的东西。

如何维护所有父类的变量,函数,钩子和放大器?过滤器等进入子类?

并且,我无法真正使用父类更改文件,因为它位于插件核心文件中,我不想直接修改。

1 个答案:

答案 0 :(得分:1)

我见过很多人使用parent::__construct()传递父变量等的例子,他们把它放在孩子的__construct()函数中。那不适合我。

然而,我终于能够通过在我添加到父类的新函数中调用父构造函数来使其工作。像这样:

function post_confirmation() {

    parent::__construct();

    ...do the stuff with my mods...
}

从这篇文章中获得解决方案> https://stackoverflow.com/a/32232406/1848815