PHP中的callback是指在函数参数中传递一个函数作为参数,让另外一个函数去执行这个传递进来的函数。这种做法的好处是提高了代码的复用性和扩展性。
下面以数组排序为例,使用php callback来进行排序。我们可以先编写一个自定义的排序函数mySort():
function mySort($a, $b){if ($a == $b) {return 0;}return ($a< $b) ? -1 : 1;}
然后我们可以定义一个数组$arr:
$arr = array(3, 1, 5, 2, 7, 4);
使用php的uasort()函数可以进行自定义排序,其中第二个参数是一个callback函数名:
uasort($arr, 'mySort');print_r($arr);
运行结果为:
Array([1] =>1[3] =>2[5] =>3[6] =>4[0] =>5[2] =>7)
除了具体的排序例子,callback在PHP中还有以下两种常用的用途:
1、将一个函数作为参数传递给另一个函数
例如,我们可以先编写一个用来处理数组的函数:
function arrHandle($arr, $func) {foreach($arr as $item) {$func($item);}}
然后定义一个处理数组的方法:
function process($item) {echo "item is:".$item."\n";}
最后我们可以传递这个处理函数到数组处理函数中:
$arr = array(1, 2, 3);arrHandle($arr, 'process');
2、使用匿名函数
使用匿名函数可以不用专门为一个函数来分配一个函数名,可以更加灵活地使用callback。
$arr = array(1, 2, 3);arrHandle($arr, function($item){echo "item is:".$item."\n";});
这是使用callback的两种常用场景。callback的应用广泛,在PHP中提供了多种方法来使用callback,它极大地提高了代码的灵活性和扩展性。