>백엔드 개발 >PHP 튜토리얼 >PHP 콜백 콜백 함수에 대한 자세한 설명

PHP 콜백 콜백 함수에 대한 자세한 설명

怪我咯
怪我咯원래의
2017-06-19 13:29:495829검색

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

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

2 4 6 8 10

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

한 함수에 여러 콜백이 등록된 경우(예: call_user_func() 및 call_user_func_array() 사용) 이전 콜백에서 포착되지 않은 예외가 있으면 후속 콜백은 더 이상 호출되지 않습니다.

위 내용은 PHP 콜백 콜백 함수에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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