我正在尝试创建一个初始化函数,它将调用类中的多个函数,最终结果的一个简单示例如下:
$foo = new bar;
$foo->call('funca, do_taxes, initb');
这通常可以使用call_user_func函数正常工作,但我真正想要做的就是在类中执行此操作,我不知道如何执行此操作,我的非工作代码的快速示例如下:
class bar {
public function call($funcs) {
$funcarray = explode(', ', $funcs);
foreach($funcarray as $func) {
call_user_func("$this->$func"); //???
}
}
private function do_taxes() {
//...
}
}
我如何调用动态类函数?
答案 0 :(得分:7)
您需要使用数组,例如Example #4 in the manual:
call_user_func(array($this, $func));
答案 1 :(得分:5)
它实际上比您想象的要简单得多,因为PHP允许variable variables之类的东西(以及变量对象成员名称):
foreach($funcarray as $func) {
$this->$func();
}
答案 2 :(得分:0)
您需要做的就是
$this->$func();
编辑 - 无视上一篇文章,我有点仓促和误解
对于本机或用户功能,您可以代替call_user_func
执行类似操作
function arf($a) {print("arf $a arf");}
$x = 'strlen';
$f2 = 'arf';
print($x('four')."\n");
$f2($arg1);
OUT
4
arf arf
答案 3 :(得分:0)
当我们想要检查类中是否存在类函数/方法时,
然后这可以帮助
内部课程......
$class_func = "foo";
if(method_exists($this , $class_func ) ){
$this->$class_func();
}
public function foo(){
echo " i am called ";
}