This article mainly introduces the concept and usage of PHP callback function, briefly introduces the concept and principle of callback function, and analyzes the related usage skills of callback function in the form of examples. Friends in need can refer to it
The details are as follows:
1. The concept of callback function
Let’s first look at the callback function in C language: the callback function is a pass function The function called by the pointer. If you pass a function pointer (address) as a parameter to another function, and when this pointer is used to call the function it points to, we say it is a callback function. The callback function is not called directly by the implementer of the function, but is called by another party when a specific event or condition occurs to respond to the event or condition.
The concept of callback functions in other languages is similar, but the implementation mechanisms of callback functions in various languages are different. Generally speaking, the callback function is a function that we define, but it is not directly Instead of calling it through another function, this function calls the callback function by receiving its name and parameters.
2. Implementation of callback function in php
php provides two built-in functionscall_user_func()
andcall_user_func_array()
Provides support for callback functions. The difference between these two functions is thatcall_user_func_arrayreceives the parameters of the callback function in the form of an array. You can tell by looking at its prototype:mixed call_user_func_array (callable $callback, array$param_arr), it has only two parameters. The number ofcall_user_func($callback, parameter 1, parameter 2,...)is determined based on the parameters of the callback function.
How to implement callbacks for global functions in scripts, non-static methods that do not use $this in classes, non-static methods that use $this in classes (need to pass in objects), and static methods in classes, as follows is the code that passed the test.
"; } //通过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."
"; echo 'my name is:'.$this->name; echo "
"; } function show1($arg1,$arg2) { echo __METHOD__.' exec,the args is:'.$arg1.' '.$arg2."
"; } public static function show2($arg1,$arg2) { echo __METHOD__.' of class A exec, the args is:'.$arg1.' '.$arg2."
"; } } //调用类中非静态成员函数,该成员函数中有$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'));
Run result:
f1exec,the args is:han wen f1exec,the args is:han wen the arg is:han! my name is:wen A::show1 exec,the args is:han! wen A::show2 of class A exec, the args is:argument1 argument2
How promise replaces the callback function in the code
Detailed explanation of the use case of JS callback function
Using JS Callback function case description
##
The above is the detailed content of The concept and usage of PHP callback functions. For more information, please follow other related articles on the PHP Chinese website!