php回调函数的概念及实例

php提供了两个内置函数call_user_func()和call_user_func_array()提供对回调函数的支持。这两个函数的区别是call_user_func_array是以数组的形式接收回调函数的参数的,看它的原型就知道了:mixed call_user_func_array ( callable $callback,array$param_arr ),它只有两个参数。而call_user_func($callback,参数1,参数2,…)的参数个数根据回调函数的参数来确定的。

如何实现对脚本中全局函数、类中未使用$this的非静态方法、类中使用$this的非静态方法(需要传入对象)、类中静态方法的回调呢,下面是测试通过的代码。

        <?php   

        //普通函数
        function f1($arg1,$arg2)
        {
            echo __FUNCTION__.‘exec,the args is:‘.$arg1.‘ ‘.$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‘));
原文:https://blog.csdn.net/u010544319/article/details/9186323 

原文地址:https://www.cnblogs.com/sgm4231/p/10457415.html

时间: 2024-08-02 20:57:56

php回调函数的概念及实例的相关文章

JS回调函数--简单易懂有实例

版权声明:本文为博主原创文章,未经博主允许不得转载 初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数. 我们先来看看回调的英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed. 字面上的理解,回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函

回调函数以及钩子函数的概念

钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统.每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权.这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递.对每种类型的钩子由系统来维护一个钩子链,最近安装的钩子放在链的开始,而最先安装的钩子放在最后,也就是后加入的先获得控制权.要实现Win32的系统钩子,必须调用SDK中的API函数SetWindowsHookEx来安装这个钩子函数,这个函数的原型是

理解javascript中的回调函数(callback)【转】

在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实际上是一种对象,它可以"存储在变量中,通过参数传递给(别一个)函数(function),在函数内部创建,从函数中返回结果值". 因为function是内置对象,我们可以将它作为参数传递给另一个函数,延迟到函数中执行,甚至执行后将它返回.这是在JavaScript中使用回调函数的精髓.本篇文

java 回调函数很好懂

首先先介绍回调函数的概念.比如客户端client,想要调用服务器端server的某个函数为你提供服务.比如炒西红柿炒蛋,cookTomato() 这时候,服务器端说,你先付钱才能为你服务,这时候服务器端要调用客户端的getMoney().才能为你继续服务.这里的getMoney就是回调函数了.而且这}getMoney()方法是一个接口方法,因为客户端只要给钱就好,不管是人民币还是美元,我都接受. public interface Money(){ //要被回调的方法 void float get

理解javascript中的回调函数(callback)

以下内容来源于:http://www.jb51.net/article/54641.htm 最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: app.use(function(req, res, next) {    var err = new Error('Not Found');    err.status = 404;    next(err);}); app是对象,use是方法,方

Block、委托、回调函数原理剖析(在Object C语境)——这样讲还不懂,根本不可能!

开篇:要想理解Block和委托,最快的方法是搞明白“回调函数”这个概念. 做为初级选手,我们把Block.委托.回调函数,视为同一原理的三种不同名称.也就是说,现在,我们把这三个名词当成一回事.在这篇文章内,Block就是回调函数,委托也是回调函数,不再作详细的区分了.OK,Action! 那么,什么是回调函数?“回调”概念的主语是谁? 举个栗子(伪代码): 首先有个类,我们姑且称之为A类吧. A.h 文件 //声明回调函数:给指定的员工发放工资 -(void)paySalaryForStaff

android中出现的多处回调函数

回调函数的概念 android中出现的多处回调函数,比如去override 一些函数 OnCreate等等 http://www.cnblogs.com/codingmyworld/archive/2011/07/22/2113514.html android中出现的多处回调函数,布布扣,bubuko.com

C/C++之回调函数介绍

之前对于C/C++的回调函数不是很理解,今天就来学习下C/C++中的回调函数. 在理解回调函数之前,首先讨论下函数指针的概念. 函数指针: 1. 概念:指针是一个变量,是用来指向内存地址的.一个程序运行时,所有和运行相关的事物都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向他.函数是存放在内存代码区域内的,他们同样有地址,因此同样可以用指针来存取函数,把这个指向函数入口地址的指针称为函数指针. 2. 先看一个Hello World程序: 1 #include <stdio.

javascript中的回调函数(callback) (转载)

代码如下: app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); app是对象,use是方法,方法的参数是一个带参的匿名函数,函数体直接在后面给出了.这段代码怎么理解呢?我们先来了解回调函数这个概念. 首先要了解,在 js 中,函数也是对象,可以赋值给变量,可以作为参数放在函数的参数列表中.比如: 代码如下: var doSomething = f