回调函数是指调用函数的时候将另一个函数作为参数传递到调用的函数中,而不是传递一个普通的变量作为参数
使用回调函数是为了可以将一段自己定义的功能传到函数内部使用
声明回调函数的方法
变量函数声明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php function Calculate( $num ){ for ( $i =0; $i <=10; $i ++){ if ( $num ( $i )){ continue ; } echo $i . "nbsp" ; } } function Number_1( $a ){ return $a %2 == 0; //打印不能被2整除的数 } function Number_2( $b ){ return $b >=6; //打印小于6的数 } Calculate( "Number_1" ); echo "<br>" ; Calculate( "Number_2" ); ?> |
执行结果
call_user_func_array()函数
该函数需要两个参数。
第一个参数是要调用的函数名,第二个参数是数组类型,为参数列表。
参数列表的参数个数要和要调用的函数的参数个数相同
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?php function Speak( $a , $b ){ echo "He can speak " . $a ; echo "<br>" ; echo "She can speak " . $b ; } function Speak_Test(){ return call_user_func_array( 'Speak' , array ( 'Chinese' , 'English' )); } Speak_Test() ?> |
执行结果
类静态函数和对象
该方法回调函数也需要用到call_user_func_array()函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php class Speaking{ static function Speak( $a , $b ){ echo "He can speak " . $a ; echo "<br>" ; echo "She can speak " . $b ; echo "<br>" ; } } class Writting{ function Write( $a , $b ){ echo "He can write " . $a ; echo "<br>" ; echo "She can write " . $b ; } } call_user_func_array( array ( "Speaking" , "Speak" ), array ( "Chinese" , "English" )); call_user_func_array( array ( new Writting(), 'Write' ), array ( "German" , "Portuguese" )); ?> |
类中的方法为静态,回调方法为
call_user_func_array(array("类名","类中的静态方法"))
类中的方法不为静态,回调方法为
call_user_func_array(array(对象引用,"对象中方法名"))
执行结果