全局命名空间函数在命名空间类构造函数

时间:2017-04-06 23:57:24

标签: php wordpress

WordPress具有全局函数,例如wp_get_current_user(),我可以在类方法中调用,它们位于\wp_get_current_user的不同名称空间下。但是我无法在类构造函数中将其设置为变量(类$user = \wp_get_current_user等类属性)。我猜这里有一条我不知道的PHP规则?

例如,

namespace App;
class User{

    //this doesn't work **I found that this is because we have to initialize the variables with constants (expressions aren't allowed**
    $user = \wp_get_current_user(); 

    function __construct(){
        //this also doesn't work
        $this->user = \wp_get_current_user();

        $this->init();
    }

    function init(){
        //this works
        $this->user = \wp_get_current_user();
    }
}

3 个答案:

答案 0 :(得分:0)

wp_get_current_user()是/wp-includes/pluggable.php中的可插入函数,您可以将其用作函数调用,如下所示:

<?php $current_user = wp_get_current_user(); ?>

答案 1 :(得分:0)

也许你可以从全局上下文中调用wp_get_current_user()并将其值作为参数传递给User类构造函数。然后,您应该能够从班级中访问当前用户

答案 2 :(得分:0)

因此无法在插件构造函数中调用此方法的原因是因为在pluggable.php文件中定义了wp_get_current_user()(如果我们选择,那里的函数可以被覆盖),在所有插件之后加载。因此,解决方案是在注册到WordPress挂钩(add_action,..filter)的类方法中调用此函数。