有以下(示例)类:
class klasse
{
private $var = 'doit';
function doit($param)
{
return md5($param);
}
function bla($param)
{
// HERES THE PROBLEM
return $this->{$this->var}($param);
}
}
// Create new instance
$klasse = new klasse;
// Start the "dynamical output"
echo $klasse->bla('test');
这很好用!但问题是,我想"直接动态"调用md5()函数。所以我不想用"doit()"走弯路。如果我尝试
private $var = 'md5';
在课程开始时,我收到以下(绝对有意义的)错误消息:
致命错误:在第13行中调用未定义的方法klasse::md5()
所以我知道这个错误是有道理的,但我不知道如何避免它?
我该如何处理(直接调用md5())?
谢谢!
这应该有效:
class klasse
{
public function __construct() {
$this->var = 'md5';
}
}
$klasse = new klasse;
echo call_user_func($klasse->var, 'argument');
更多信息,请访问:http://php.net/manual/en/function.call-user-func.php