使用对象方法回调
在 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
回调被视为具有可调用类型的函数引用/对象。
它可以充当对象方法、函数或者静态类方法。
其中我们将演示使用标准回调、静态类方法回调、对象方法回调以及闭包回调的方法。
日期:2020-06-02 22:15:54 来源:oir作者:oir
