酒贱常愁客少,月明多被云妨.
函数调用 第一种调用方式:
1 2 3 4 5 function test ( ) { echo 'test' ; } test();
第二种调用方式:
1 2 3 4 5 function test ( ) { echo 'test' ; } call_user_func('test' );
参数传递:
1 2 3 4 5 6 function test ($a , $b ) { echo $a ; echo $b ; } call_user_func_array ('test' , [1 , 'ff' ]);
不定参数:
1 2 3 4 5 6 function oldAdd ( ) { $args = func_get_args(); dd($args ); } oldAdd('1' , '2' , '3' );
或者
1 2 3 4 5 6 function test ( ) { $args = func_get_args(); dd($args ); } call_user_func_array ('test' , [1 , 'ff' ]);
方法调用 第一种方法:
1 2 3 4 5 6 7 8 9 class Test { public function hehe ( ) { echo 'hehe' ; } } (new Test())->hehe();
第二种方法:
1 2 3 4 5 6 7 8 9 10 class Test { public function hehe ( ) { echo 'hehe' ; } } $f = new Test();call_user_func([ $f , 'hehe' ]);
静态方法:
1 2 3 4 5 6 7 8 9 class Test { public static function hehe ($a , $b ) { echo $a ; } } call_user_func_array([ 'Test' , 'hehe' ], ['we' , 34 ]);
普通方法传递参数:
1 2 3 4 5 6 7 8 9 10 class Test { public function hehe ($a , $b ) { echo $a ; } } $f = new Test();call_user_func_array([ $f , 'hehe' ], ['we' , 34 ]);
类内部的方法调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Test { public function hehe ($a , $b ) { call_user_func([$this , 'init' ]); echo $a ; } public function init ( ) { echo '--init--' ; } } $f = new Test();call_user_func_array([ $f , 'hehe' ], ['we' , 34 ]);
两种调用的区别 call_user_func is for calling functions whose name you don’t know ahead of time but it is much less efficient since the program has to lookup the function at runtime.