>백엔드 개발 >PHP 튜토리얼 >PHP 콜백 유형(콜백)

PHP 콜백 유형(콜백)

伊谢尔伦
伊谢尔伦원래의
2016-11-24 13:53:051279검색

PHP 5.4부터 콜백 유형을 지정하기 위해 콜백 유형을 사용할 수 있습니다. 본 문서에서도 같은 이유로 콜백 유형 정보를 사용하고 있습니다.

call_user_func() 또는 usort()와 같은 일부 함수는 사용자 정의 콜백 함수를 매개변수로 받을 수 있습니다. 콜백 함수는 단순한 함수일 뿐만 아니라 정적 클래스 메서드를 포함한 객체 메서드일 수도 있습니다.

전달

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 &#39;hello world!&#39;;
}
 
// An example callback method
class MyClass {
   static function myCallbackMethod() {
       echo &#39;Hello World!&#39;;
   }
}
 
// Type 1: Simple callback
call_user_func(&#39;my_callback_function&#39;);
 
// Type 2: Static class method call
call_user_func(array(&#39;MyClass&#39;, &#39;myCallbackMethod&#39;));
 
// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, &#39;myCallbackMethod&#39;));
 
// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func(&#39;MyClass::myCallbackMethod&#39;);
 
// 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(&#39;B&#39;, &#39;parent::who&#39;)); // A
?>

예제 #2 클로저 사용 예

<?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(&#39; &#39;, $new_numbers);
?>

위 루틴은 다음을 출력합니다:

2 4 6 8 10

참고: PHP 4에서는 특정 개체를 가리키는 콜백 함수를 생성하려면 복사본이 아닌 참조를 사용해야 합니다. 설명은 인용을 참조하세요.

참고:

한 함수에 여러 콜백 콘텐츠를 등록할 때(예: call_user_func() 및 call_user_func_array() 사용) 이전 콜백에서 포착되지 않은 예외가 있으면 더 이상 호출됩니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.