php自訂函數之回調函數LOGIN

php自訂函數之回調函數

回呼函數,可以配合匿名函數和變數函數來實現更優美、複雜的一種函數結構。

回呼函數,就是在處理一個功能的時候,我讓讓這個功能自訂能力再強一些,我準許呼叫這個函數的時候,還可以傳入一個函數配合、協助進行處理。

這是變數函數和回呼函數結合的一個章節。

<?php


function woziji($one,$two,$func){
       //我规定:检查$func是否是函数,如果不是函数停止执行本段代码,返回false
       if(!is_callable($func)){
               return false;
       }

       //我把$one、$two相加,再把$one和$two传入$func这个函数中处理一次
       //$func是一个变量函数,参见变量函数这一章
       echo $one + $two + $func($one,$two);

}


//我们定义几个函数试试
function plusx2( $foo , $bar){

       $result = ($foo+$bar)*2;

       return $result;

}

function jian( $x , $y ){
   $result = $x - $y;

   return $result;
}


//调用一下函数,woziji,向里面传入参数试试

echo woziji(20,10,'plusx2');

//将plusx2改成jian试试结果
echo woziji(20,10,'jian');

?>

處理過程是這樣的:

    1.將20賦值給形參$one,10賦值給了$two,而plusx2或jian這兩個變數函數,賦值給了$func

    2.在woziji這個函數中判斷plusx2或jian是否為函數,不是函數就return false 停止執行了

    3.顯示plusx2或jian是函數。因此$one = 20, $two =10相加了,相加後,$one和$two又帶入了$func($one,$two)中。

    4.帶入至裡面後$func,是可變的,可以為plusx2或jian。如果為plusx2的話,$one = 20,$two = 10 的這個兩個結果又給       了plusx2函數裡面的$foo和$bar

#    5.$foo + $bar 乘以2後將結果回到woziji這個函數功能體的運算處:$one + $two + $func($one,$two);

    6.這樣主得到了運算結果

現在我們明白了回呼函數:在一個調數裡面,再傳入一個函數名,將函數名稱加上()括號。識為變數函數,配合執行。

下一節
<?php function woziji($one,$two,$func){ //我规定:检查$func是否是函数,如果不是函数停止执行本段代码,返回false if(!is_callable($func)){ return false; } //我把$one、$two相加,再把$one和$two传入$func这个函数中处理一次 //$func是一个变量函数,参见变量函数这一章 echo $one + $two + $func($one,$two); } //我们定义几个函数试试 function plusx2( $foo , $bar){ $result = ($foo+$bar)*2; return $result; } function jian( $x , $y ){ $result = $x - $y; return $result; } //调用一下函数,woziji,向里面传入参数试试 echo woziji(20,10,'plusx2'); //将plusx2改成jian试试结果 echo woziji(20,10,'jian'); ?>
章節課件