PHP 5.4부터 호출 가능 유형을 사용하여 콜백 유형 콜백을 지정할 수 있습니다. 본 문서에서도 같은 이유로 콜백 유형 정보를 사용하고 있습니다.
call_user_func() 또는 usort()와 같은 일부 함수는 사용자 정의 콜백 함수를 매개변수로 받을 수 있습니다. 콜백 함수는 단순한 함수일 뿐만 아니라 정적 클래스 메서드를 포함한 객체 메서드일 수도 있습니다.
Passing
PHP 함수는 이름을 문자열 형식으로 전달합니다. array() , echo ,empty() , eval() ,exit() , isset() , list() , print 또는 unset() 과 같은 언어 구성을 제외하고 모든 내장 또는 사용자 정의 함수를 사용할 수 있습니다. . 인스턴스화된 개체의 메서드는 배열로 전달되며 아래 첨자 0에는 개체가 포함되고 아래 첨자 1에는 메서드 이름이 포함됩니다.
하첨자 0에 개체 대신 클래스 이름이 포함되어 있는 한 클래스의 개체를 인스턴스화하지 않고도 정적 클래스 메서드를 전달할 수도 있습니다. PHP 5.2.3부터는 'ClassName::methodName'을 전달할 수도 있습니다.
일반 사용자 정의 함수 외에도 create_function()을 사용하여 익명 콜백 함수를 만들 수 있습니다. PHP 5.3.0부터는 콜백 매개변수에 클로저를 전달하는 것도 가능합니다.
예제 #1 콜백 함수 예
<?php // An example callback function function my_callback_function () { echo 'hello world!' ; } // An example callback method class MyClass { static function myCallbackMethod () { echo 'Hello World!' ; } } // Type 1: Simple callback call_user_func ( 'my_callback_function' ); // Type 2: Static class method call call_user_func (array( 'MyClass' , 'myCallbackMethod' )); // Type 3: Object method call $obj = new MyClass (); call_user_func (array( $obj , 'myCallbackMethod' )); // Type 4: Static class method call (As of PHP 5.2.3) call_user_func ( 'MyClass::myCallbackMethod' ); // Type 5: Relative static class method call (As of PHP 5.3.0) class A { public static function who () { echo "A\n" ; } } class B extends A { public static function who () { echo "B\n" ; } } call_user_func (array( 'B' , 'parent::who' )); // A ?>
예제 #2 Closure를 사용한 예
<?php // Our closure $double = function( $a ) { return $a * 2 ; }; // This is our range of numbers $numbers = range ( 1 , 5 ); // Use the closure as a callback here to // double the size of each element in our // range $new_numbers = array_map ( $double , $numbers ); print implode ( ' ' , $new_numbers ); ?>
위 루틴은 다음을 출력합니다.
2 4 6 8 10
참고: PHP 4에서는 참조를 사용하여 다음을 가리키는 콜백 함수를 생성해야 합니다. 복사본이 아닌 특정 개체. 설명은 인용을 참조하세요.
한 함수에 여러 콜백이 등록된 경우(예: call_user_func() 및 call_user_func_array() 사용) 이전 콜백에서 포착되지 않은 예외가 있으면 후속 콜백은 더 이상 호출되지 않습니다.
위 내용은 PHP 콜백 콜백 함수에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!