当前位置: 代码迷 >> 综合 >> php call_user_func(),call_user_func_array()示例和区别
  详细解决方案

php call_user_func(),call_user_func_array()示例和区别

热度:1   发布时间:2023-12-18 19:27:31.0
<?php//call_user_func()  返回值:返回回调函数的返回值.//自定义方法,执行
function sum($a,$b){$c = $a+$b;echo $a;echo $b;echo $c;
}
call_user_func('sum','10','20');//102030
//也可以直接把回调方法写入调用   func_get_args()  获取参数的数组
call_user_func(function (){ $para = func_get_args(); foreach ($para as $v){ echo $v;} },10,20,13,30);//10201330//类的使用
class test{function __construct(){echo 'construct';}public static function sum($a,$b){$c = $a+$b;echo $a;echo $b;echo $c;}function __destruct(){echo 'destruct';}
}
//其中类的方法没有static修饰会报错:Strict Standards:  非静态方法的错误
call_user_func(array('test','sum'),'30','40');//304070
call_user_func('test::sum','30','40');//304070//call_user_func_array()  返回回调函数的结果。如果出错的话就返回FALSE//实现相似,只是换了一种方式传递了参数,而自己感觉 call_user_func_array() 的写入规则更加清楚
//方法
call_user_func_array('sum', array("111", "222"));//111222333
//也可以直接把回调方法写入调用
call_user_func_array(function (){ $para = func_get_args(); foreach ($para as $v){ echo $v;} },array(10,20,30,40));//10203040
//类
call_user_func_array(array('test','sum'), array("111", "222"));//111222333
call_user_func_array('test::sum', array("111", "222"));//111222333/*
call_user_func(),call_user_func_array()使用类的方法 和 new 对象后调用方法 区别
*///区别:该使用类的方法和直接new调用的区别,就是有没有触发构造和析构方法
//该调用了test类中的方法,但是没有调用构造方法,而new对象就会触发构造方法
$a = new test;
$a->sum(1,2);//construct123destruct