call_user_func ( callback $function [, mixed $parameter [, mixed $... ]] )

调用第一个参数所提供的用户自定义的函数。
返回值:返回调用函数的结果,或FALSE。

example

  1. <?php
  2. function eat($fruit) //参数可以为多个
  3. {
  4. echo "You want to eat $fruit, no problem";
  5. }
  6. call_user_func('eat', "apple"); //print: You want to eat apple, no problem;
  7. call_user_func('eat', "orange"); //print: You want to eat orange,no problem;
  8. ?>


调用类的内部方法:

  1. <?php
  2. class myclass {
  3. function say_hello($name)
  4. {
  5. echo "Hello!$name";
  6. }
  7. }
  8. $classname = "myclass";
  9. //调用类内部的函数需要使用数组方式 array(类名,方法名)
  10. call_user_func(array($classname, 'say_hello'), 'dain_sun');
  11. //print Hello! dain_sun
  12. ?>

call_user_func_array 函数和 call_user_func 很相似,只是
使
用了数组

的传递参数形式,让参数的结构更清晰:

call_user_func_array

( callback

$function

, array
$param_arr

)

类中的回调函数最好是static的

数组中的第一个参数(类名)也可以用实例化的对象来代替。

调用用户定义的函数,参数为数组形式。
返回值:返回调用函数的结果,或FALSE。

  1. <?php
  2. function debug($var, $val)
  3. {
  4. echo "variable: $var <br> value: $val <br>";
  5. echo "<hr>";
  6. }
  7. $host = $_SERVER["SERVER_NAME"];
  8. $file = $_SERVER["PHP_SELF"];
  9. call_user_func_array('debug', array("host", $host));
  10. call_user_func_array('debug', array("file", $file));
  11. ?>


调用类的内部方法和 call_user_func 函数的调用方式一样,都是使用了数组的形式来调用。

exmaple:

  1. <?php
  2. class test
  3. {
  4. function debug($var, $val)
  5. {
  6. echo "variable: $var <br> value: $val <br>";
  7. echo "<hr>";
  8. }
  9. }
  10. $host = $_SERVER["SERVER_NAME"];
  11. $file = $_SERVER["PHP_SELF"];
  12. call_user_func_array(array('test', 'debug'), array("host", $host));
  13. call_user_func_array(array('test', 'debug'), array("file", $file));
  14. ?>


注:call_user_func
函数和call_user_func_array函数都支持引用。

    1. <?php
    2. function increment(&$var)
    3. {
    4. $var++;
    5. }
    6. $a = 0;
    7. call_user_func('increment', $a);
    8. echo $a; // 0
    9. call_user_func_array('increment', array(&$a)); // You can use this instead
    10. echo $a; // 1
    11. ?>

call_user_function()方法的使用的更多相关文章

  1. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  2. mapreduce多文件输出的两方法

    mapreduce多文件输出的两方法   package duogemap;   import java.io.IOException;   import org.apache.hadoop.conf ...

  3. 【.net 深呼吸】细说CodeDom(6):方法参数

    本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...

  4. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  5. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  6. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  7. ArcGIS 10.0紧凑型切片读写方法

    首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...

  8. [BOT] 一种android中实现“圆角矩形”的方法

    内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...

  9. JS 判断数据类型的三种方法

    说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...

随机推荐

  1. .NET (五)委托第五讲:内置委托Predicate

    // 摘要: // 表示定义一组条件并确定指定对象是否符合这些条件的方法. // // 参数: // obj: // 要按照由此委托表示的方法中定义的条件进行比较的对象. // // 类型参数: // ...

  2. JS验证输入网址

    function CheckUrl(a) {    var falg = true;    var regstr = /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- . ...

  3. asp.net调用存储过程详解

    摘要 存储过程的调用在B/S系统中用的很多.传统的调用方法不仅速度慢,而且代码会随着存储过程的增多不断膨胀,难以维护.新的方法在一定程度上解决了这些问题. 关键词 ASP.NET:存储过程   在使用 ...

  4. arp命令

    地址解析协议ARP用于将IP地址解析成MAC地址.当把数据包从一个计算机发送到另一个计算机的时候,计算机或路由器使用ARP请求来确定下一跳的MAC地址. MAC地址用于按跳发送数据包,直到达到最终目的 ...

  5. oracle 触发器学习

    触发器使用教程和命名规范 目  录触发器使用教程和命名规范 11,触发器简介 12,触发器示例 23,触发器语法和功能 34,例一:行级触发器之一 45,例二:行级触发器之二 46,例三:INSTEA ...

  6. Easyui表单之按钮的提交

    一.表单按钮的提交前代表对提交内容的验证 二.表单按钮的提交后代表对把数据提交给后台 1. 界面层页面编辑代码: <!DOCTYPE html> <html> <head ...

  7. Android真机访问PC端服务器

    若电脑联网:     1.开启一个无线网(以猎豹免费wifi为例)     2.手机连接上这个无线网(这样手机和电脑就在一个局域网内了)     3.此时查看手机的ip地址(我的是192.168.19 ...

  8. leetcode 6. ZigZag Conversion

    https://leetcode.com/problems/zigzag-conversion/ 题目: 将字符串转化成zigzag模式. 例如 "abcdefghijkmlnpq" ...

  9. 三张图片详解Asp.Net 全生命周期

    用三张图片详解Asp.Net 全生命周期 下面我们使用三张图片解析ASP.net的整个生命周期,我总感觉使用图片更加的清楚的说明这种问题,所以使用的这样方式 说明: 1  第一张图片从全局说明从客户端 ...

  10. socket选项总结(setsocketopt)

    功能描述:        获取或者设置与某个套接字关联的选 项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套接字选项时,选项位于的层和选项的名称必须给出.为了操作套接字层的选项, ...