php의 콜백 함수 코드 분석
1. 콜백 함수의 개념
먼저 C 언어의 콜백 함수를 살펴보겠습니다. 콜백 함수는 이라는 함수입니다. 함수 포인터를 통해. 함수 포인터(주소)를 다른 함수에 매개변수로 전달하고 이 포인터가 가리키는 함수를 호출하는 데 사용되는 경우 이를 콜백 함수라고 합니다. 콜백 함수는 함수 구현자가 직접 호출하는 것이 아니라 특정 이벤트나 조건이 발생했을 때 상대방이 해당 이벤트나 조건에 대응하기 위해 호출하는 함수이다.
다른 언어의 콜백 함수 개념은 비슷하지만 다양한 언어의 콜백 함수 구현 메커니즘이 다릅니다. 일반적으로 콜백 함수는 우리가 정의하는 함수이지만 직접 호출하지는 않습니다. . 이름과 매개변수를 수신하여 콜백 함수를 호출하는 다른 함수를 통해 호출됩니다.
2. PHP PHP의 콜백 함수 는 콜백 함수를 지원하기 위해
call_user_func()및 call_user_func_array() 두 가지 내장 함수를 제공합니다. 이 두 함수의
차이점은 call_user_func_array가 콜백 함수의 매개변수를 배열 형식으로 받는다는 것입니다. 해당 프로토타입을 보면 알 수 있습니다. 혼합 call_user_func_array ( 호출 가능 $callback , array$param_arr ) 두 개의 매개변수만 있습니다 ; call_user_func($callback, 매개변수 1, 매개변수 2,...)의 매개변수 개수는 콜백 함수의 매개변수에 따라 결정됩니다.
3. 콜백 함수 구현
스크립트에서 전역 함수를 구현하는 방법, 클래스에서 $this를 사용하지 않는 비정적 메서드, 클래스에서 $this를 사용하는 비정적 메서드(객체에 전달해야 함) , 클래스의 정적 메소드 메소드의 콜백에 대해 테스트를 통과한 코드는 다음과 같습니다.<?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'));
PHP Tutorial"에서 복제되었습니다.
위 내용은 PHP의 콜백 함수 코드 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!