php自定義函數(shù)之回調(diào)函數(shù)
回調(diào)函數(shù),可以配合匿名函數(shù)和變量函數(shù)實(shí)現(xiàn)更加優(yōu)美、復(fù)雜的一種函數(shù)結(jié)構(gòu)。
回調(diào)函數(shù),就是在處理一個(gè)功能的時(shí)候,我讓讓這個(gè)功能自定義能力再?gòu)?qiáng)一些,我準(zhǔn)許調(diào)用這個(gè)函數(shù)的時(shí)候,還可以傳入一個(gè)函數(shù)配合、協(xié)助進(jìn)行處理。
這是變量函數(shù)和回調(diào)函數(shù)結(jié)合的一個(gè)章節(jié)。
<?php function woziji($one,$two,$func){ //我規(guī)定:檢查$func是否是函數(shù),如果不是函數(shù)停止執(zhí)行本段代碼,返回false if(!is_callable($func)){ return false; } //我把$one、$two相加,再把$one和$two傳入$func這個(gè)函數(shù)中處理一次 //$func是一個(gè)變量函數(shù),參見(jiàn)變量函數(shù)這一章 echo $one + $two + $func($one,$two); } //我們定義幾個(gè)函數(shù)試試 function plusx2( $foo , $bar){ $result = ($foo+$bar)*2; return $result; } function jian( $x , $y ){ $result = $x - $y; return $result; } //調(diào)用一下函數(shù),woziji,向里面?zhèn)魅雲(yún)?shù)試試 echo woziji(20,10,'plusx2'); //將plusx2改成jian試試結(jié)果 echo woziji(20,10,'jian'); ?>
處理過(guò)程是這樣的:
1.將20賦值給形參$one,10賦值給了$two,而plusx2或者jian這兩個(gè)變量函數(shù),賦值給了$func
2.在woziji這個(gè)函數(shù)中判斷plusx2或者jian是否為函數(shù),不是函數(shù)就return false 停止執(zhí)行了
3.顯示plusx2或者jian是函數(shù)。因此$one = 20, $two =10相加了,相加后,$one和$two又帶入到了了$func($one,$two)中。
4.帶入至里面后而$func,是可變的,可以為plusx2或者jian。如果為plusx2的話,$one = 20,$two = 10 的這個(gè)兩個(gè)結(jié)果又給 了plusx2函數(shù)里面的$foo和$bar
5.$foo + $bar 乘以2后將結(jié)果返回至woziji這個(gè)函數(shù)功能體的運(yùn)算處:$one + $two + $func($one,$two);
6.這樣主得到了運(yùn)算結(jié)果
現(xiàn)在我們明白了回調(diào)函數(shù):在一個(gè)調(diào)數(shù)里面,再傳入一個(gè)函數(shù)名,將函數(shù)名加上()括號(hào)。識(shí)為變量函數(shù),配合執(zhí)行。