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