我有一些问题.
我想从另一个类调用类的静态方法.
类名称和方法是动态创建的.
做起来并不难:
$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变量,并将$this->方法分配给$method变量,它就不起作用.
有什么问题?
最佳答案 在PHP 7.0中,您可以使用如下代码:
<?php
class abc {
static public function action() {
return "Hey";
}
}
class xyz {
protected $method = 'action';
protected $class = 'abc';
public function test(){
$data = $this->class::{$this->method}();
echo $data;
}
}
$xyz = new xyz();
$xyz->test();
对于PHP 5.6及更低版本,您可以使用call_user_func功能:
<?php
class abc {
static public function action() {
return "Hey";
}
}
class xyz {
protected $method = 'action';
protected $class = 'abc';
public function test(){
$data = call_user_func([
$this->class,
$this->method
]);
echo $data;
}
}
$xyz = new xyz();
$xyz->test();