【发布时间】:2016-06-22 22:36:06
【问题描述】:
我遇到了一些问题。
我想从另一个类调用类的static 方法。
类名和方法是动态创建的。
这样做并不难:
$class = 'className';
$method = 'method';
$data = $class::$method();
但是,我想这样做
class abc {
static public function action() {
//some code
}
}
class xyz {
protected $method = 'action';
protected $class = 'abc';
public function test(){
$data = $this->class::$this->method();
}
}
如果我不将$this->class 分配给$class 变量,将$this->method 分配给$method 变量,它就不起作用。
有什么问题?
【问题讨论】:
-
$this总是指向当前对象——方法正在执行的那个。你不能使用$this并神奇地让它变成其他对象的“this”。即使你可以做到$this->$class->action(),$class也只是一个字符串。它不是对象,也不指向对象的实例,因此即使该字符串是某个对象的名称,您也不能使用它来执行对象中的方法。您唯一可以使用它的就是调用它所代表的类的 STATIC 方法。