我正在尝试使用变量来获取扩展类中的函数,这是我想要的,但是我无法让它工作,感谢您的帮助。
class topclass {
function mode() {
$mode = 'function()';
$class = new extendclass;
$class->$mode;
}
}
答案 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允许可变数量的参数。)