php扩展动态回调函数的实现(php回调函数怎么写)

本文目录一览:

php回调函数是什么样子的?靠什么原理运行?

回调函数就是那些自己写的,但是不是自己来调,而是给别人来掉的函数。

就像下面的odd()和even()函数一样。

?php

function odd($var)

{

return($var % 2 == 1);

}

function even($var)

{

return($var % 2 == 0);

}

$array1 = array(“a”=1, “b”=2, “c”=3, “d”=4, “e”=5);

$array2 = array(6, 7, 8, 9, 10, 11, 12);

echo “Odd :\n”;

print_r(array_filter($array1, “odd”));//这里把array1的值依次传入到odd这个函数里面,这种方式就称为回调

echo “Even:\n”;

print_r(array_filter($array2, “even”));

?

下面这个例子实现函数的回调

?

function fnCallBack($msg1, $msg2)

{

echo ‘msg1:’.$msg1;

echo ‘br/’;

echo ‘msg2:’.$msg2;

}

$fnName = ‘fnCallBack’;//函数名

$params = array(‘hello’, ‘world’);//将要传入到函数里面的参数

call_user_func_array($fnName, $params);

?

PHP中的回调函数是怎么实现的?

第一种, 常规的php全局函数

function test($echo)

{

echo $echo, “\n”;

}

$param = array(“”);

call_user_func_array(test, $param);

call_user_func_array(“test”, $param);

输出:

两种调用方式都可以成功调用, 说明call_user_func_array调用常规php局函数时的第一个参数可以为函数本身,也可以为表示函数名的字符串。

第二种, 类的静态方法

class TestC

{

static function test($echo)

{

echo $echo, “\n”;

}

}

$param = array(“”);

call_user_func_array(array(TestC, “test”), $param);

call_user_func_array(array(“TestC”, “test”), $param);

输出:

这时传第一个参数的时候传了一个数据。数组的第一个元素可以为类本身,也可以为类名的一个字符串。第二个元素则是一个表示方法名的字符串。

第三种,对象的方法

class TestC

{

protected $_a = “hello word”;

function test($echo)

{

$this-_a = $echo;

}

function show()

{

echo $this-_a, “\n”;

}

}

$param = array(“”);

$obj = new TestC();

call_user_func_array(array($obj, “test”), $param);

$obj-show();

$obj-test(“WEB应用开发”);

$obj-show();

输出:

WEB应用开发

这里是调用一个对象的方法。从test方法中设置对象的_a成员,然后通过show方法将它显示出来,以验证call_user_func_array调用方法时可以正确等到$this指针。这里输出的结果表明已经上面的方法是奏效的。其实回调对象的方法还有一种更加简单的方法,直接$obj-{$method}()就可以调用,只要{$method}是存在的。

PHP回调函数及匿名函数概念与用法详解

PHP的回调函数其实和C,Java等语言的回调函数的作用是一模一样的,都是在主线程执行的过程中,突然跳去执行设置的回调函数;

回调函数执行完毕之后,再回到主线程处理接下来的流程;

而在PHP调用回调函数,不像C以及Java那样直接使用函数名作为函数参数,而是在PHP中使用函数对应的字符串名称执行。

// call_user_func — 把第一个参数作为回调函数调用

// 第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。

// PHP中的匿名函数,也叫闭包函数,允许指定一个没有名称的函数。最常用的就是回调函数的参数值。

//检测一个函数变量是否是一个闭包

// 传入参数,引用局部变量

PHP中的回调函数是怎么实现的?

第一种,

常规的php全局函数

function

test($echo)

{

echo

$echo,

“\n”;

}

$param

=

array(“”);

call_user_func_array(test,

$param);

call_user_func_array(“test”,

$param);

输出:

两种调用方式都可以成功调用,

说明call_user_func_array调用常规php局函数时的第一个参数可以为函数本身,也可以为表示函数名的字符串。

第二种,

类的静态方法

class

TestC

{

static

function

test($echo)

{

echo

$echo,

“\n”;

}

}

$param

=

array(“”);

call_user_func_array(array(TestC,

“test”),

$param);

call_user_func_array(array(“TestC”,

“test”),

$param);

输出:

这时传第一个参数的时候传了一个数据。数组的第一个元素可以为类本身,也可以为类名的一个字符串。第二个元素则是一个表示方法名的字符串。

第三种,对象的方法

class

TestC

{

protected

$_a

=

“hello

word”;

function

test($echo)

{

$this-_a

=

$echo;

}

function

show()

{

echo

$this-_a,

“\n”;

}

}

$param

=

array(“”);

$obj

=

new

TestC();

call_user_func_array(array($obj,

“test”),

$param);

$obj-show();

$obj-test(“WEB应用开发”);

$obj-show();

输出:

WEB应用开发

这里是调用一个对象的方法。从test方法中设置对象的_a成员,然后通过show方法将它显示出来,以验证call_user_func_array调用方法时可以正确等到$this指针。这里输出的结果表明已经上面的方法是奏效的。其实回调对象的方法还有一种更加简单的方法,直接$obj-{$method}()就可以调用,只要{$method}是存在的。

原创文章,作者:GZPN5,如若转载,请注明出处:https://www.506064.com/n/128386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
GZPN5GZPN5
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • Python中capitalize函数的使用

    在Python的字符串操作中,capitalize函数常常被用到,这个函数可以使字符串中的第一个单词首字母大写,其余字母小写。在本文中,我们将从以下几个方面对capitalize函…

    编程 2025-04-29
  • QML 动态加载实践

    探讨 QML 框架下动态加载实现的方法和技巧。 一、实现动态加载的方法 QML 支持从 JavaScript 中动态指定需要加载的 QML 组件,并放置到运行时指定的位置。这种技术…

    编程 2025-04-29
  • Python中set函数的作用

    Python中set函数是一个有用的数据类型,可以被用于许多编程场景中。在这篇文章中,我们将学习Python中set函数的多个方面,从而深入了解这个函数在Python中的用途。 一…

    编程 2025-04-29
  • 三角函数用英语怎么说

    三角函数,即三角比函数,是指在一个锐角三角形中某一角的对边、邻边之比。在数学中,三角函数包括正弦、余弦、正切等,它们在数学、物理、工程和计算机等领域都得到了广泛的应用。 一、正弦函…

    编程 2025-04-29
  • 单片机打印函数

    单片机打印是指通过串口或并口将一些数据打印到终端设备上。在单片机应用中,打印非常重要。正确的打印数据可以让我们知道单片机运行的状态,方便我们进行调试;错误的打印数据可以帮助我们快速…

    编程 2025-04-29
  • Python3定义函数参数类型

    Python是一门动态类型语言,不需要在定义变量时显示的指定变量类型,但是Python3中提供了函数参数类型的声明功能,在函数定义时明确定义参数类型。在函数的形参后面加上冒号(:)…

    编程 2025-04-29
  • Python实现计算阶乘的函数

    本文将介绍如何使用Python定义函数fact(n),计算n的阶乘。 一、什么是阶乘 阶乘指从1乘到指定数之间所有整数的乘积。如:5! = 5 * 4 * 3 * 2 * 1 = …

    编程 2025-04-29
  • Python定义函数判断奇偶数

    本文将从多个方面详细阐述Python定义函数判断奇偶数的方法,并提供完整的代码示例。 一、初步了解Python函数 在介绍Python如何定义函数判断奇偶数之前,我们先来了解一下P…

    编程 2025-04-29

发表回复

登录后才能评论