使用对象方法回调

在 PHP 中,我们可以借助 call_user_func() 调用对象方法。
这里的参数是一个包含对象变量和要调用的方法字符串名称的数组。

让我们看一个例子:

<?php
 
class OIR
{

  static function someFunction()
  {
    echo "onitroad \n";
  }

  public function __invoke()
  {
    echo "invoke onitroad \n";
  }
}
//类对象
$obj = new OIR();
//对象方法调用
call_user_func(array(
  $obj,
  'someFunction'
));
//可调用的 __invoke 方法对象
call_user_func($obj);
?>

输出如下:

onitroad
  invoke onitroad

闭包回调

我们可以通过标准调用或者通过将闭包函数映射到使用 array_map() 发送到闭包的有效参数数组来使闭包函数可调用。
其中闭包函数及其有效参数的数组被认为是函数的参数。

该示例将如下所示:

<?php
 
//用于打印字符串的闭包
$print_function = function($string)
{
  echo $string . "\n";
};
//字符串数组
$string_array = array(
  "onitroad",
  "OIR",
  "Article"
);
//回调闭包
array_map($print_function, $string_array);
?>

使用静态类方法回调

在 PHP 中,我们可以借助 call_user_func() 调用静态方法。
其中参数是一个数组,其中包含类字符串名称和其中要调用的方法。

<?php

//示例类
class OIR
{

  //用于打印字符串的函数
  static function someFunction()
  {
    echo "Parent onitroad \n";
  }
}
class Article extends OIR
{

  
  static function someFunction()
  {
    echo "onitroad Article \n";
  }
}
//静态类方法回调
call_user_func(array(
  'Article',
  'someFunction'
));
call_user_func('Article::someFunction');
//相对静态类方法回调
call_user_func(array(
  'Article',
  'parent::someFunction'
));
?>

输出将如下所示:

onitroad Article
  onitroad Article
  Parent onitroad

使用标准回调

在 PHP 中,我们可以借助 call_user_func() 函数调用函数。

参数是将要调用的函数的字符串名称。

下面是一个例子:

<?php

function someFunction()
{
  echo "onitroad \n";
}
//标准回调
call_user_func('someFunction');
?>

输出是:

onitroad
如何在 PHP 中使用回调

回调被视为具有可调用类型的函数引用/对象。

它可以充当对象方法、函数或者静态类方法。

其中我们将演示使用标准回调、静态类方法回调、对象方法回调以及闭包回调的方法。

日期:2020-06-02 22:15:54 来源:oir作者:oir