콜백 함수
콜백 함수를 익명 함수, 변수 함수와 함께 사용하면 더욱 아름답고 복잡한 함수 구조를 구현할 수 있습니다.
콜백 함수는 함수를 처리할 때 함수를 더 사용자 정의할 수 있도록 하기 위한 것입니다. 이 함수를 호출할 때 함수를 전달하여 처리에 협조하고 지원할 수도 있습니다.
<?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'); // 输出结果为 90 //将plusx2改成jian试试结果 echo woziji(20,10,'jian'); //输出结果为 40 ?>
처리 과정은 다음과 같습니다.
형식 매개변수 $one에 20을 할당하고 $func에 10을 $two에 할당하고 두 변수 함수 plusx2 또는 jian을 할당합니다.
woziji 함수에서 plusx2 또는 jian이 함수인지 확인하고, 함수가 아니면 false를 반환하고 실행을 중지합니다
Display plusx2 또는 jian은 함수입니다. 따라서 $one = 20, $two =10이 추가되고 $1과 $two가 $func($one,$two)에 추가됩니다.
을 내부로 가져오고 $func는 변수이며 plusx2 또는 jian일 수 있습니다. plusx2인 경우 $one = 20, $two = 10의 두 결과는 plusx2 함수
$foo + $bar에 2를 곱한 다음 $foo 및 $bar를 제공합니다. 결과를 woziji 함수 본문의 계산 위치로 반환합니다: $one + $two + $func($one,$two);
이런 방식으로 작업의 주요 결과는 다음과 같습니다. 획득
이제 콜백 함수를 이해했습니다. 콜백에서 함수 이름을 전달하고 함수 이름에 () 괄호를 추가합니다. 가변함수로 인식하고 함께 실행해 보세요.
가변함수
가변함수, 변수함수라고도 부르겠습니다
가변함수 사용법은 이렇습니다 :
<?php function demo() { echo '天王盖地虎'; } function test() { echo '小鸡炖蘑菇'; } $fu = 'demo'; //把$fu变为了demo,把demo后加上了一个括号,就执行函数了 $fu(); // 输出为 天王盖地虎 //把$fu的值改为test字符串再试试? ?>
익명함수
가끔 우리만을 위한 함수가 있습니다. 임시 처리를 위해 함수를 재사용할 필요가 없으므로 이름을 지정하는 것이 매우 번거롭기 때문에 이를 처리하려면 익명 함수가 필요합니다.
익명 함수에는 이름이 없으므로 사용하려면 필요합니다. 변수로 반환합니다.
익명 함수의 첫 번째 사용법은 변수에 직접 할당을 할당하는 것이며, 변수를 호출하는 것이 호출 함수입니다.
가변 함수형 익명 함수
<?php $greet = function($name) { echo $name.',你好'; }; $greet('明天'); //输出 明天,你好 $greet('PHP'); // 输出 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); //结果为: 150 } woziji(20,30,function($foo,$bar) { $result = ($foo+$bar)*2; return $result; } ); ?>
내부 함수:
내부함수란 함수 내부에 함수가 선언되어 있다는 뜻입니다.
참고:
내부 함수 이름은 기존 함수 이름일 수 없습니다
함수 a에 내부 함수가 정의되어 있다고 가정하면 함수 a를 두 번 사용할 수 없습니다. <… .
주의 깊게 관찰하고 실험한 후 다음과 같은 결론을 내립니다.
1. foo()를 두 번 호출하면 오류가 보고됩니다.2. bar는 foo 내부에 있으므로 foo() 함수를 조정하지 않으면 bar 함수를 실행할 수 없습니다.