当我的插件处于活动状态时,如何在类中添加新属性?

时间:2018-01-18 作者:J.BizMai

我已经有一个名为People 在我的插件中。

PHP人员类

namespace MyPlugin\\Common;

class People{

    public $people_id;
    public $first_name;
    public $last_name;

    public function __construct( $data ){
        $this->people_id = $data["people_id"];
        $this->first_name = $data["first_name"];
        $this->last_name = $data["last_name"];
    }

    public function save(){

         global $wpdb;

         $data = array(
             "first_name" => $this->first_name,
             "last_name" => $this->last_name
          );

          $wpdb->insert( $wpdb->prefix . PLUGIN_PREFIX . \'people\', $data );

          return $wpdb->insert_id;

   }

}
我想在激活加载项时,People 使用属性作为数组进行了改进,以获取/设置更多信息,如以下结果:

带有加载项激活的PHP People类

namespace MyPlugin\\Common;

class People{

    public $people_id;
    public $first_name;
    public $last_name;

    public $options = array(); //<-- add an array

    public function __construct( $data ){
        $this->people_id = $data["people_id"];
        $this->first_name = $data["first_name"];
        $this->last_name = $data["last_name"];

        $this->options = $data[\'options\']; //<-- set more information
    }

    //Override the save function to save $this->options

    /*  magic method set */
    public function __set($name, $value) {
        if (isset($this->data[$name])) $this->data[$name] = $value;
    }

    /*  magic method get */
    public function __get($name) {
        if (isset($this->data[$name])) return $this->data[$name];
        else return false;
    }

}
有没有办法用钩子函数或类似的东西来实现这一点?

1 个回复
SO网友:moonbas3

您需要在类中声明此数据的位置,如预先声明数组,然后按如下方式使用它:

class test {
  private $first_name;
  private $data = array();

  public function __set($name, $value) {
    $this->data[$name] = $value;
  }

  public function __get($name) {
    if (array_key_exists($name, $this->data))
        return $this->data[$name];
    else
        return \'not found\';
  }
}

$try = new test();
$try->last_name = \'jhon\';

echo $try->last_name;
然后看看register_activation_hook 来自Wordpress。

您还可以在PHP网站上阅读有关魔术方法的更多信息:http://php.net/manual/ro/language.oop5.overloading.php#object.set

结束

相关推荐

Wordpress Admin Tooltip hooks

我想知道是否有一种方法可以使用Wordpress管理工具提示(灰色和蓝色),当你更新你的Wordpress(3.x)时会显示这些提示。显示新功能。谢谢