Home >Backend Development >PHP Tutorial >Detailed explanation of php Callback callback function

Detailed explanation of php Callback callback function

怪我咯
怪我咯Original
2017-06-19 13:29:495829browse

Since PHP 5.4, the callable type can be used to specify Callback type callback. This document uses callback type information for the same reason.

Some functions such as call_user_func() or usort() can accept user-defined callback functions as parameters. The callback function can not only be a simple function, but also an object method, including static class methods.

Passing

A PHP function passes its name as string type. Any built-in or user-defined function can be used, except language constructs such as: array() , echo , empty() , eval() , exit() , isset() , list() , print or unset() . The methods of an instantiated object are passed as an array, with subscript 0 containing the object and subscript 1 containing the method name.

Static class methods can also be passed without instantiating an object of the class, as long as subscript 0 contains the class name instead of the object. Since PHP 5.2.3, it is also possible to pass 'ClassName::methodName'.

In addition to ordinary user-defined functions, create_function() can be used to create an anonymous callback function. Since PHP 5.3.0 it is also possible to pass closure to the callback parameter.

Example #1 Callback function example

<?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
?>

Example #2 Example of using 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 );
?>

The above routine will output:

2 4 6 8 10

Note: In PHP 4, you need to use a reference to create a callback function pointing to a specific object, rather than a copy. See citation for explanation.

When registering multiple callback contents in a function (such as using call_user_func() and call_user_func_array()), if there is an uncaught exception in the previous callback, the subsequent ones will no longer be called.

The above is the detailed content of Detailed explanation of php Callback callback function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn