PHP call_user_func理解

 call_user_func():调用一个回调函数处理字符串,
  可以用匿名函数,可以用有名函数,可以传递类的方法,
  用有名函数时,只需传函数的名称
  用类的方法时,要传类的名称和方法名
  传递的第一个参数必须为函数名,或者匿名函数,或者方法
  其他参数,可传一个参数,或者多个参数,这些参数会自动传递到回调函数中
  而回调函数,可以通过传参,获取这些参数
  返回回调函数处理后的结果

 

①传递函数名,通过回调函数的形参获取call_user_func传参数的情况

';
    echo $call++,"
"; } //上面回调函数没有返回值,所以,这里就没有返回值,_call为上面的函数的名称 $re = call_user_func('_call',1); //实验结果为 null,符合上面的结论 var_dump($re);

②调用匿名函数传参的情况

';
    echo ++$call,'
'; },1);//传给匿名函数的参数为···1···,执行的结果为2,3

③回调函数是匿名函数,并且匿名函数不设参数,通过其他方式获取参数的情况

 

④调用···没有命名空间···的······类方法······的情况

⑤调用·····有命名空间的·······类方法·········的情况

⑥调用php系统函数

彩蛋:

Thinkphp5.1框架源码也是大量采用call_user_func函数回调:

例:\think\App类      run()初始化方法

dispatch中call_user_func会回调到run中$this->middleware->add()的匿名函数中

PHP call_user_func理解_第1张图片

PHP call_user_func理解_第2张图片

你可能感兴趣的:(PHP)