我有一些问题。 我想从另一个类中调用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 **方法。 –