UCenter源代码里有一个函数call_user_func,开始以为是自己定义的函数,结果到处都找不到。后来才知道call_user_func是PHP的内置函数,该函数允许用户调用直接写的函数并传入一定的参数,下面总结下这个函数的使用方法。

  call_user_func函数类似于一种特别的调用函数的方法,使用方法如下: 

<?php
function nowamagic($a,$b)
{   echo $a;   echo $b;
}
call_user_func('nowamagic', "111","222");
call_user_func('nowamagic', "333","444");
//显示 111 222 333 444
?>

调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也挺有新意的:

<?php
class a {   function b($c)   {   echo $c;   }
}
call_user_func(array("a", "b"),"111");
//显示 111
?>

call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:

<?php
function a($b, $c)
{   echo $b;   echo $c;
}
call_user_func_array('a', array("111", "222"));
//显示 111 222
?>

call_user_func_array函数也可以调用类内部的方法的:

<?php
Class ClassA
{   function bc($b, $c) {   $bc = $b + $c;
echo $bc;
}
}
call_user_func_array(array('ClassA','bc'), array("111", "222"));   //显示 333
?>

call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:

<?php
function a($b)
{   $b++;
}
$c = 0;
call_user_func('a', $c);
echo $c;//显示 1
call_user_func_array('a', array($c));
echo $c;//显示 2
?>

另外,call_user_func函数和call_user_func_array函数都支持引用。

<?php
function increment(&$var)
{$var++;
}
$a = 0;
call_user_func('increment', $a);
echo $a; // 0
call_user_func_array('increment', array(&$a)); // You can use this instead
echo $a; // 1
?>

转自:http://www.nowamagic.net/librarys/veda/detail/1509/

转载于:https://www.cnblogs.com/mljun/p/5557170.html

php函数 call_user_func相关推荐

  1. PHP函数call_user_func和call_user_func_array详解

    今天在群里面,有个叫lewis的在问call_user_func_array的用法,因为之前一直没有用过,也不能说什么,于是看一下手册,发现是这么写的: call_user_func_array (P ...

  2. 【PHP注入01】PHP语言常见可注入函数(eval、assert、preg_replace、call_user_func、$a($b)等)

    目录 1 PHP注入概述 2 相关函数与语言结构 2.1 eval()函数 2.2 assert()函数 2.3 preg_replace()函数 2.4 call_user_func()函数 2.5 ...

  3. php调用字符串函数参数,如何从包含参数的变量中存储的字符串调用PHP函数

    我从这里找到了问题.但我需要用参数调用函数名.我需要能够调用一个函数,但是函数名存储在一个变量中,这是可能的吗?例如: function foo ($argument) { //code here } ...

  4. PHP中处理函数的函数(Function Handling Functions)

    2019独角兽企业重金招聘Python工程师标准>>> call_user_func_array - 让参数以数组的形式调用一个函数 call_user_func - 调用一个存在的 ...

  5. php强大的函数,PHP中一些功能强大却很少使用的函数

    本文主要介绍了PHP中功能强大却很少使用的函数,结合实例形式总结分析了php中非常实用的几个函数,包括函数的调用.注册.调用.判断等操作技巧.需要的朋友可以参考下,希望对大家有所帮助. 具体如下: c ...

  6. PHP中功能强大却少使用的函数 -- 为你提供更多的思路

    call_user_func_array - 让参数以数组的形式调用一个函数 call_user_func - 调用一个存在的函数 create_function - 建立一个函数 func_get_ ...

  7. php的内置函数strrpos_PHP函数用法详解【初始化、嵌套、内置函数等】

    本文实例讲述了PHP函数用法.分享给大家供大家参考,具体如下: 初始函数 函数:封装一段用于完成特定功能的代码. 通俗理解函数:可以完成魔鬼工作的代码块,就像积木一样,可以反复使用,在使用的时候,拿来 ...

  8. PHP常用系统函数帅哥特供版

    [TOC] PHP常用系统函数帅哥特供版 常用操作 定界符 <<<EOF内容EOF; 1.PHP定界符的作用就是按照原样,包括换行格式什么的,输出在其内部的东西: 2.在PHP定界符 ...

  9. php绕过d盾,巧用匿名函数绕过D盾

    之前看了smile大佬的webshell绕过,跟着smile大佬的思路,自己来挖掘了一下绕过D盾的方式 这篇文章中,smile大佬提到了非常多的绕过D盾方式,我就不重复了,我在这里主要是利用了匿名函数 ...

  10. thinkphp学习笔记13-15集

    13集: ThinkPHP3.1.3使用视频教程--后台登录验证与自动运行方法_标清.flv 14集: ThinkPHP3.1.3使用视频教程--自定义SESSION处理DB驱动与添加Redis处理驱 ...

最新文章

  1. easyui动态增加datagrid列_多工作表动态合并,其实很简单
  2. 公开处刑:PapersWithCode上线“论文复现报告”,遏制耍流氓行为!
  3. 传iPhone 4S下月初开卖
  4. 实战篇 | 基于freeRTOS的多任务事件传输demo(附代码)
  5. 【Java】生成UUID
  6. Report20201016 benchmark vs袁颖 PANTHER初步模拟结果
  7. Eclipse没有server 配置Tomcat
  8. 2012年1月份第2周51Aspx源码发布详情
  9. mysql以user1登录_在mysql中创建用户后不能本地登录的解决方法
  10. GLTF格式——关系描述
  11. Linux怎么添加交换空间,如何在Ubuntu上增加swap交换空间
  12. React Native 系列(三) -- 项目结构介绍
  13. 使用微信机器人实现华为OLT和中兴OLT挂测的简单功能
  14. 传统IT架构转型,从云原生平台到微服务应用构建
  15. 易语言文件夹加密解密助手
  16. 实战项目-小说网站开发过程中难点记录(1)
  17. python实现爬取网易云音乐评论,并且将评论信息存储到pymysql
  18. JS逆向加密——AES加密解密
  19. java 英文字符占几个字节_Java的字符串里的字符到底占几个字节?
  20. html字体加粗且变色,简单的html代码 加粗 加亮 字型加大 变色 分别是写什么`

热门文章

  1. PyTorch实现CNN
  2. python3 unicodedecodeerror_Python3 UnicodeDecodeError
  3. python比较两个文件内容是否一样_python判断两个json文件是否相等
  4. Git-查看远程分支、本地分支、创建分支
  5. 打造轻量级的实体类数据容器
  6. django基础-学生管理系统
  7. 内存延续分派治理方法
  8. mybatis多参数传递(其中包括数组)
  9. php操作大缓存的存储与读取
  10. LightGBM-GBDT-LR使用树集合进行特征转换