call_user_func() 和 call_user_func_array(),通过传入字符串函数,可以调用自定义函数,并且支持引用,都允许用户调用自定义函数并传入一定的参数:

1、mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )

  第一个参数为自定义函数名称,后面的参数为函数的参数,返回值为自定义函数的结果。

function say($word)
{
echo $word;
}
call_user_func('say', 'hello world');
//输出
//hello world

  当然也可以调用类中的方法:

class World {
function sayHello($word = '')
{
echo $word;
}
}
//注意,必须是要实例化的,除非是static
$world = new World();
call_user_func([$world, 'sayHello'], 'hello world');
//输出 hello world

注意:上面写数组的方式[ ],如果PHP版本在PHP5.4以下的,还是用array()

2、mixed call_user_func_array ( callable $callback , array $param_arr )

跟call user func()在功能上其实是一样的,只是传入参数上稍有区别,这个其实从方法的命名上就可以看的出来:

function say($word)
{
echo $word;
}
call_user_func_array('say', ['hello world']); //注意:第二个参数是数组的形式
//输出
//hello world
class World {
function sayHello($word = '')
{
echo $word;
}
}
//注意,必须是要实例化的,除非是static
$world = new World();
call_user_func_array([$world, 'sayHello'], ['hello world']); //注意:第二个参数是数组形式
//输出 hello world

PHP中call user func()和call_user_func_array()调用自定义函数小结的更多相关文章

  1. 如何在sqlite3连接中创建并调用自定义函数

    #!/user/bin/env python # @Time :2018/6/8 14:44 # @Author :PGIDYSQ #@File :CreateFunTest.py '''如何在sql ...

  2. LR常用函数以及调用自定义函数

    2.LR常用函数以及调用自定义函数 2.1.LR常用函数以及对信息的判断 2.1.1. LR内部自定义函数 在LR脚本中定义变量和编写自定义函数,需将变量的声明放在脚本其他内容的上方,否则会提示[il ...

  3. Python中random模块在主函数中设置随机种子是否对于调用的函数中的随机值产生影响?

    一个问题,加入我有一个工程文件,在main函数里面调用random模块,设置随机种子,主函数中的随机种子的设置是否会影响主函数所调用的函数中的随机值? 实际上这个问题非常重要,比如你在跑网络的时候,初 ...

  4. 微信小程序wxml文件中调用自定义函数

    想在微信小程序的wxml文件里自如的像vue那样调用自定义的方法,发现并不成功,得利用WXS脚本语言. WXS脚本语言是 WeiXin Script 脚本语言的简称,是JavaScript.JSON. ...

  5. 【从业余项目中学习2】C# 实现调用Matlab函数(Visual Studio:2008, Matlab:R2009a)

    最近正在给客户做的个人项目,要求实现C#与Matlab之间的调用,即C# winform界面收集用户输入的参数,将参数传递给Matlab的算法计算,Matlab函数返回的结果显示在winform界面上 ...

  6. Mysql5.7创建存储过程中调用自定义函数报错Not allowed to return a result set from a function

    因为很多存储过程都会共用一段sql语句,所以我把共用的sql封装成一个自定义函数 AddCapital(); 然后通过存储过程调用,创建存储过程会报错1415,Not allowed to retur ...

  7. 使用 {$INCLUDE} 或 {$I} 指令管理和调用自定义函数

    这是一个简单.方便而又实用的小技巧. 譬如这段代码中有四个定义函数: MyAdd.MyDec.MyMul.MyDiv unit Unit1; interface uses   Windows, Mes ...

  8. ThinkPHP 3.2 调用自定义函数库

    ThinkPHP3.2 和3.1 区别还是有点大的 引入了命名空间,强化了驱动化和行为,增强了模块化的概念和对云平台的支持,并改进了诸多的细节.主要改进包括:模块化架构的全新设计全新命名空间和自动导入 ...

  9. call_user_func_array — 调用回调函数,并把一个数组参数作为回调函数的参数

    <?php function foobar($arg, $arg2) { echo __FUNCTION__, " got $arg and $arg2\n"; } clas ...

随机推荐

  1. Revit

    log file Windows Vista or Windows 7:%LOCALAPPDATA%\Autodesk\Revit\Autodesk Revit 2016\Journals

  2. Android TabHost切换选项卡实现数据实时刷新

    手机界面大小有限,使用TabHost可以达到在一个Activity中放入多个容器(界面)的效果.但存在一个问题是,当数据信息在一个容器(界面)中有所改变时,需要在用户切换选项卡到其他容器(界面)的时候 ...

  3. <meta name="renderer" content="webkit">

    <meta name="renderer" content="webkit"> 当前国内的大部分主流浏览器(如360)基本都是双核浏览器,所谓双核即 ...

  4. Subversion FAQ(常见问题解答)

    转自:http://subversion.apache.org/faq.zh.html 常见问题: 为什么会有这样一个项目? 为了接管CVS的用户基础.确切的说,我们写了一个新的版本控制系统,它和CV ...

  5. 密码存储中MD5的安全问题与替代方案

    md5安全吗?有多么地不安全?如何才能安全地存储密码?... md5安全吗? 经过各种安全事件后,很多系统在存放密码的时候不会直接存放明文密码了,大都改成了存放了 md5 加密(hash)后的密码,可 ...

  6. 【Leetcode】【Hard】Search in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  7. Python初学者第四天 二进制运转换

    4day 1.二进制运算 a.十进制转换二进制 342 转换成二进制 342  101010110 Python提供了一种简单的计算二进制的方法:bin() b.文字转换成二进制 ASCII码表 GB ...

  8. Windows下Redis集群配置

    Redis集群学习地址:http://blog.csdn.net/dc_726/article/details/11694437 Windows-32系统下搭建Redis集群 一.Redis主从同步原 ...

  9. [EffectiveC++]item33:避免遮掩继承而来的名称。

    先看看: ZT C++ 重载.覆盖和隐藏的区别 http://www.cnblogs.com/jeanschen/p/3405987.html 隐藏是指派生类的函数屏蔽了与其同名的基类函数,规则如下: ...

  10. sqoop部署与使用

    sqoop安装 1.下载并解压 scp sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz mini1:/root/apps/ tar -zxvf sqoop-1.4 ...