PHP:动态调用默认方法

时间:2015-12-30 17:35:29

标签: php class dynamic methods

有以下(示例)类:

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())?

谢谢!

1 个答案:

答案 0 :(得分:0)

这应该有效:

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