如何将对象函数分配给变量?

时间:2012-02-02 06:19:25

标签: php

class example()
{
    function shout($var)
    {
        echo 'shout'.$var;
    }

    function whisper($var, $bool)
    {
        if($bool)
        {
           echo $var;
        }
    }
}

$obj = new example();

if($var) 
{
    $func = $obj->shout();
}else
{
    $func = $obj->whisper();
}

我想首先准备函数变量以供以后使用,而不是将条件放在循环中。有可能这样做吗?

2 个答案:

答案 0 :(得分:6)

您可以按名称调用方法:

if ($var) {
    $fn = 'shout';
} else {
    $fn = 'whisper';
}

$obj->$fn();

答案 1 :(得分:4)

您可以将函数名称放在字符串中:

if($var) 
{
    $func = 'shout';
}else
{
    $func = 'whisper';
}

后来:

$obj->$func

您还可以使用回调:

if($var)
{
    $func = array($obj, 'shout');
}else
{
    $func = array($obj, 'whisper');
}

随后:

call_user_func($func);

或:

call_user_func_array($func, $args);