1. 콜백 함수의 개념
먼저 C 언어의 콜백 함수를 살펴보겠습니다. 콜백 함수는 함수 포인터를 통해 호출되는 함수입니다. 함수 포인터(주소)를 다른 함수에 매개변수로 전달하고 이 포인터가 가리키는 함수를 호출하는 데 사용되는 경우 이를 콜백 함수라고 합니다. 콜백 함수는 함수 구현자가 직접 호출하는 것이 아니라 특정 이벤트나 조건이 발생했을 때 상대방이 해당 이벤트나 조건에 대응하기 위해 호출하는 함수이다.
다른 언어의 콜백 함수 개념은 비슷하지만 다양한 언어의 콜백 함수 구현 메커니즘이 다릅니다. 일반적으로 콜백 함수는 우리가 정의하는 함수이지만 직접 호출하지는 않지만, 이를 통해 다른 함수를 호출하기 위해 이 함수는 해당 함수의 이름과 매개변수를 전달받아 콜백 함수를 호출합니다.
2. PHP에서 콜백 기능 구현
PHP는 콜백 함수를 지원하기 위해 두 가지 내장 함수를 제공합니다. 이 두 함수의 차이점은 call_user_func()
和call_user_func_array()
call_user_func_array가 콜백 함수의 매개변수를 배열 형태로 받는다는 것입니다. 해당 프로토타입을 보면 알 수 있습니다: mixed call_user_func_array (callable $callback, array$param_arr) 매개변수가 2개뿐입니다. call_user_func($callback, 매개변수 1, 매개변수 2,...)의 매개변수 개수는 콜백 함수의 매개변수에 따라 결정됩니다.
<?php //普通函数 function f1($arg1,$arg2) { echo __FUNCTION__.'exec,the args is:'.$arg1.' '.$arg2; echo "<br/>"; } //通过call_user_func调用函数f1 call_user_func('f1','han','wen'); //通过call_user_func_array调用函数 call_user_func_array('f1',array('han','wen')); class A { public $name; function show($arg1) { echo 'the arg is:'.$arg1."<br/>"; echo 'my name is:'.$this->name; echo "<br/>"; } function show1($arg1,$arg2) { echo __METHOD__.' exec,the args is:'.$arg1.' '.$arg2."<br/>"; } public static function show2($arg1,$arg2) { echo __METHOD__.' of class A exec, the args is:'.$arg1.' '.$arg2."<br/>"; } } //调用类中非静态成员函数,该成员函数中有$this调用了对象中的成员 $a = new A; $a->name = 'wen'; call_user_func_array(array($a,'show',),array('han!')); //调用类中非静态成员函数,没有对象被创建,该成员函数中不能有$this call_user_func_array(array('A','show1',),array('han!','wen')); //调用类中静态成员函数 call_user_func_array(array('A','show2'),array('argument1','argument2'));실행 결과:
f1exec,the args is:han wen f1exec,the args is:han wen the arg is:han! my name is:wen A::show1 exec,the args is:han! wen A::show2 of class A exec, the args is:argument1 argument2관련 권장 사항:
php 콜백 함수 및 익명 함수 사용에 대한 자세한 설명
위 내용은 PHP 콜백 함수 개념 및 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!