Extend a class plugin

时间:2011-06-23 作者:Sein Oxygen

我无法从加载“子类”示例的主类中获取用户变量:

//PLUGIN FILE
class father{

    var $user;

    function __construct() {
        add_action(\'plugins_loaded\', array(&$this, \'loaded\'));
    }

    function plugins_loaded(){
        global $wp_get_current_user;
        $this->user = wp_get_current_user();
    }
}

$plugin = new parent();
这就是插件文件。

//EXTEND CLASS
class child extends father{

    function __construct(){
        parent::__construct();
    }

    function user_id(){
        echo $this->user->ID;
    }
}
那是扩展类。

//CONFIG FILE (DISPLAYED IN ADMIN PANEL)
$child = new child();
$user_id = $child->user->id;
$child->user_id();
这就是配置页面。

我无法在扩展类中获取用户id,但在父类中可以。

为什么以及如何解决?

1 个回复
最合适的回答,由SO网友:mfields 整理而成

This works for me:

class father {
    var $user;
    function __construct() {
        add_action( \'init\', array( &$this, \'set_user\' ) );
    }
    function set_user() {
        $this->user = wp_get_current_user();
    }
}

class child extends father {
    function __construct() {
        parent::__construct();
    }
    function user_id(){
        return $this->user->ID;
    }
}

$father = new father();
$child = new child();

add_action( \'admin_notices\', \'test_stuff\' );
function test_stuff() {
    global $child;
    print \'<pre>Child: \' . print_r( $child->user_id(), true ) . \'</pre>\';
}
结束

相关推荐