Home  >  Article  >  Backend Development  >  Detailed explanation of the use of PHP callback functions

Detailed explanation of the use of PHP callback functions

php中世界最好的语言
php中世界最好的语言Original
2018-04-11 10:05:491914browse

This time I will bring you PHP's callback functiondetailed explanation of its use, PHP callback functionWhat are the notes used, the following is a practical case, one Get up and take a look.

The examples in this article describe the concept and usage of PHP callback functions. Share it with everyone for your reference, the details are as follows:

1. The concept of callback function

First, let’s take a look at the callback function in C language: The callback function is a function called through the function 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 we define, but we do not call it directly, but through To call 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 functions call_user_func() and call_user_func_array() to provide support for callback functions. The difference between these two functions is that call_user_func_array receives 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 of call_user_func($callback, parameter 1, parameter 2,...) is determined based on the parameters of the callback function.

How to implement callbacks to

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.

<?php
//普通函数
function f1($arg1,$arg2)
{
  echo FUNCTION.&#39;exec,the args is:&#39;.$arg1.&#39; &#39;.$arg2;
  echo "<br/>";
}
//通过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."<br/>";
    echo 'my name is:'.$this->name;
    echo "<br/>";
  }
  function show1($arg1,$arg2)
  {
    echo METHOD.' exec,the args is:'.$arg1.' '.$arg2."<br/>";
  }
  public static function show2($arg1,$arg2)
  {
    echo METHOD.' of class A exec, the args is:'.$arg1.' '.$arg2."<br/>";
  }
}
//调用类中非静态成员函数,该成员函数中有$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'));
Operation 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
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website!

Recommended reading:

How to use the file_put_contents function in PHP

How to operate phar files in PHP

How does PHP find the longest common substring

What methods does PHP have to generate random numbers

The above is the detailed content of Detailed explanation of the use of PHP callback functions. 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