首页课程PHP Fun Breakthrough Class自定义函数之回调函数

自定义函数之回调函数

目录列表

回调函数

回调函数,可以配合匿名函数和变量函数实现更加优美、复杂的一种函数结构。

回调函数,就是在处理一个功能的时候,我让这个功能自定义能力再强一些,我准许调用这个函数的时候,还可以传入一个函数配合、协助进行处理。

实例:

<?php

function woziji($one,$two,$func){
       //我规定:检查$func是否是函数,如果不是函数停止执行本段代码,返回false
       if(!is_callable($func)){
               return false;
       }
       //我把$one、$two相加,再把$one和$two传入$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') .'<br>'; // 90

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

?>

以上的实例代码可能一下会看不懂,不要着急,下面我们来详细的讲解一次上面的代码处理过程是怎样的:

  • 将20赋值给形参$one,10赋值给了$two,而plusx2或者jian这两个变量函数,赋值给了$func

  • 在woziji这个函数中判断plusx2或者jian是否为函数,不是函数就return false 停止执行了

  • 显示plusx2或者jian是函数。因此$one = 20, $two =10相加了,相加后,$one和$two又带入到了了$func($one,$two)中。

  • 带入至里面后而$func,是可变的,可以为plusx2或者jian。如果为plusx2的话,$one = 20,$two = 10 的这个两个结果又给了plusx2函数里面的$foo和$bar

  • $foo + $bar 乘以2后将结果返回至woziji这个函数功能体的运算处:$one + $two + $func($one,$two);

  • 这样主得到了运算结果

现在我们明白了回调函数:在一个调数里面,再传入一个函数名,将函数名加上()括号。识为变量函数,配合执行。

实际上自己也是可以调用自己。

很简单的一道数学题,填写下面的正确答案。

<?php function jisuan($one,$two,$func){ if(!is_callable($func)){ return false; } echo $one * $two - $func($one,$two); } function jian( $foo , $bar){ $result = $foo-$bar; return $result; } echo jisuan(5,7,'jian'); ?> //结果

1/2