使用类成员作为类名访问静态成员

Posted

技术标签:

【中文标题】使用类成员作为类名访问静态成员【英文标题】:Using class member as a class name to access static members 【发布时间】:2014-08-07 07:41:48 【问题描述】:

我知道这种情况很少见,但我想使用类属性来保存我的类名,然后通过该属性访问它的静态成员。这是我想要的一个例子:

class a
    private $className = "User";
    public function list()
         $this->className::model()->findAll(); // error occurs here!
         // equal to 
         //  User::model()->findAll();
    

到目前为止,我已经尝试了所有可能性,唯一有效的是使用范围变量。

【问题讨论】:

【参考方案1】:

尝试使用:

$class = $this->className;
$class::model()->findAll();

【讨论】:

不幸的是,我已经知道了,我正在寻找一种方法来做到这一点,没有范围变量 你也可以像这样使用call_user_funccall_user_func(array($this->className, 'model'))->findAll();

以上是关于使用类成员作为类名访问静态成员的主要内容,如果未能解决你的问题,请参考以下文章

内部类之静态内部类

7.28.2 static关键字(静态和成员)

c#面向对象基础3

static,final,包,访问修饰符,内部类

静态成员final成员面向对象接口

PHP静态成员变量