call_user_func()是利用回调函数处理字符串call_user_func_array是利用回调函数处理数组

// 1、 调用自定义函数
function test($a, $b)
{
echo $a + $b;
}
// 字符串传参
call_user_func('test', 1, 2); // 3
// 数组式传参
call_user_func_array('test', [1, 2]); // 3 // 2、 调用匿名函数
call_user_func(function($a, $b){ echo $a + $b ;}, 1, 2); //
call_user_func_array(function($a, $b){ echo $a + $b ;}, [1, 2]); // 3 // 3、 调用系统函数
echo call_user_func('strtoupper', 'abc'); // ABC
echo call_user_func_array('strtoupper', ['abc']); // ABC // 4、 调用类中的函数
class Test
{
static public function demo($a, $b)
{
echo $a + $b;
}
public function show($a, $b)
{
echo $a + $b;
}
}
// 调用类中的静态方法
// 类名方法名以数据形式
call_user_func(['Test', 'demo'], 1, 2); //
call_user_func_array(['Test', 'demo'], [1, 2]); // 3
// 类名方法名以字符串形式
call_user_func('Test::demo', 1, 2); //
call_user_func_array('Test::demo', [1, 2]); // 3 // 调用类中的动态方法,对象和方法必须通过数组形式传递
call_user_func([new Test, 'show'], 1, 2); //
call_user_func_array([new Test, 'show'], [1, 2]); //

总结: call_user_func 和 call_user_func_array不同在于传参方式,前者是字符串形式,后者是数组形式。

二者皆可调用自定义函数、匿名函数、系统函数以及类中的静态动态方法。如在TP5.1中运用Facade门面类作为静态代理类,

使用静态方式调用动态类中的动态方法,即让类无需实例化而直接进行静态方式的调用,带来了更好的可测试性和扩展性。

在 think\Facade类的最后有具体体现:

php中call_user_func 与 call_user_func_array的使用的更多相关文章

  1. php中call_user_func()与call_user_func_array()区别

    call_user_func:把一个参数作为回调函数调用 用法说明: call_user_func ( callable $callback [, mixed $parameter [, mixed ...

  2. PHP 中 call_user_func 函数 和 call_user_func_array 函数的区别

    PHP 中 call_user_func() 函数 和 call_user_func_array() 函数都是回调函数,在写接口的时候经常会用到,但是他们有什么区别呢? 它们的第一个参数都是被调用的回 ...

  3. PHP函数call_user_func和call_user_func_array详解

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

  4. call_user_func 和 call_user_func_array用法

    说明 call_user_func 和 call_user_func_array 相同:都可以调用函数和类内部的函数,不同:不同的是传递的参数不同,前者是一个参数一个参数传递, 后者是传递array参 ...

  5. PHP回调函数call_user_func()和call_user_func_array()的使用

    call_user_func():把第一个参数作为回调函数调用 用法:call_user_func ( callable $callback [, mixed $parameter [, mixed ...

  6. PHP中的call_user_func()与call_user_func_array()简单理解

    原文地址:http://small.aiweimeng.top/index.php/archives/52.html call_user_func:把一个参数作为回调函数调用 用法说明: call_u ...

  7. 简单理解call_user_func和call_user_func_array两个函数

    call_user_func():调用一个回调函数处理字符串, 可以用匿名函数,可以用有名函数,可以传递类的方法, 用有名函数时,只需传函数的名称 用类的方法时,要传类的名称和方法名 传递的第一个参数 ...

  8. php call_user_func和call_user_func_array

    首先要看这个页面关于callable类型:http://www.php.net/manual/zh/language.types.callable.php 自 PHP 5.4 起可用 callable ...

  9. PHP 中call_user_func相关函数的使用

    call_user_func 官方的解释是:把第一个参数作为回调函数(callback),并且将其余的参数作为回调函数的参数. 第一个参数可以是函数名,后面的均为作为该函数使用的参数. 1. call ...

随机推荐

  1. centos7的安装主要步骤选择

    选择语言,选择英语 选择时区done确认选择 安全策略,选择默认 安装源文件 软件包选择,此处选择 最小安装 选择磁盘,并分区

  2. 使用 ButterKnife 操作无效(不报错、点击后没效果)------代码编写错误

    错误写法 ButterKnife.bind(this, inflater.inflate(R.layout.buju, container, false)); return inflater.infl ...

  3. Pycharm4.5注册码 激活

    name : newasp ===== LICENSE BEGIN ===== 09086-12042010 00001EBwqd8wkmP2FM34Z05iXch1Ak KI0bAod8jkIffy ...

  4. tomcat 输入学习

    Tomcat学习—Tomcat7 修改/webapps/ROOT发布路径(Linux和windows环境) https://blog.csdn.net/u010648555/article/detai ...

  5. hdu3486 ST表区间最值+二分

    还是挺简单的,但是区间处理的时候要注意一下 #include<iostream> #include<cstring> #include<cstdio> #inclu ...

  6. pytest二:setup和teardown

    用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(setup_function/teardown_function)只对函数用例生效(不在 ...

  7. vue2.0路由

    现在用vue-cli搭建的环境里面vue-router是下载好的 vue2.0路由方式和以前也有些不同 没了了map和start方法 目录结构如上图 这里有三个文件,app.vue显示,main.js ...

  8. BZOJ5091 摘苹果 BZOJ2017年11月月赛 概率,期望

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5091 11月月赛B题 题意概括 题解 代码 #include <cstring> #i ...

  9. ubuntu server 18.04的安装 以及配置网络还有ssh服务

    ubuntu server 18.04的安装 以及配置网络还有ssh服务   服务器是 dell T420 安装过程中规中矩,其中最关键的是分区部分,由于是服务器,如果磁盘比较大的话,一定要用 uef ...

  10. 在python3下使用requests,xpath,urllib爬取不得姐网站相关视频爬虫源代码

    #coding=utf-8 from lxml import etreeimport requestsimport urllibimport os # 获取url的html等内容def getHtml ...