PHP包含带变量的类函数

时间:2009-05-19 10:07:01

标签: php class variables

我正在尝试使用变量来获取扩展类中的函数,这是我想要的,但是我无法让它工作,感谢您的帮助。

class topclass {
    function mode() {
        $mode = 'function()';

        $class = new extendclass;
        $class->$mode;
    }
}

2 个答案:

答案 0 :(得分:7)

不要在$ mode变量中包含括号“()”。

class topclass {
    function mode() {
        $mode = 'functionx';

        $class = new extendclass;
        $class->$mode();
    }
}

答案 1 :(得分:0)

您还可以使用回调,它是实例的数组元组和命名该函数的字符串。如果预期的呼叫是$ foo-> bar(),那么回调将是:

$callback = array($foo, 'bar');

常规函数(不是方法)和静态方法存储为普通字符串:

// Function bar
$callback = 'bar';
// Static method 'bar' in class Foo
$callback = 'Foo::bar';

使用call_user_func或call_user_func_array调用它,第二个允许将参数传递给回调函数:

// No parameters
call_user_func($callback);
// Parameters 'baz' and 'bat'
call_user_func_array($callback, array('baz', 'bat');

看起来这似乎是不必要的复杂化,但在许多情况下,您可能希望能够以编程方式构建函数调用,或者您可能不知道将提交多少参数传递给函数(一些函数,例如array_merge和sprintf允许可变数量的参数。)