php中call_user_func 与 call_user_func_array的使用

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); // 3
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); // 3
call_user_func_array([‘Test‘, ‘demo‘], [1, 2]); // 3
   // 类名方法名以字符串形式
call_user_func(‘Test::demo‘, 1, 2); // 3
call_user_func_array(‘Test::demo‘, [1, 2]); // 3

// 调用类中的动态方法,对象和方法必须通过数组形式传递
call_user_func([new Test, ‘show‘], 1, 2); // 3
call_user_func_array([new Test, ‘show‘], [1, 2]); // 3

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

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

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

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

原文地址:https://www.cnblogs.com/splendid/p/10658190.html

时间: 2024-10-29 03:51:46

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

php学习之道:call_user_func和call_user_func_array的用法

call_user_func ( callback $function [, mixed $parameter [, mixed $... ]] ) 调用第一个参数所提供的用户自定义的函数. 返回值:返回调用函数的结果,或FALSE. example : Php代码   <?php function eat($fruit) //参数可以为多个 { echo "You want to eat $fruit, no problem"; } call_user_func('eat', 

简单理解call_user_func和call_user_func_array两个函数

call_user_func():调用一个回调函数处理字符串, 可以用匿名函数,可以用有名函数,可以传递类的方法, 用有名函数时,只需传函数的名称 用类的方法时,要传类的名称和方法名 传递的第一个参数必须为函数名,或者匿名函数,或者方法 其他参数,可传一个参数,或者多个参数,这些参数会自动传递到回调函数中 而回调函数,可以通过传参,获取这些参数 返回回调函数处理后的结果 ①传递函数名,通过回调函数的形参获取call_user_func传参数的情况 <?php //先引用后增加 function

PHP 中call_user_func相关函数的使用

call_user_func 官方的解释是:把第一个参数作为回调函数(callback),并且将其余的参数作为回调函数的参数. 第一个参数可以是函数名,后面的均为作为该函数使用的参数. 1. call_user_func的初步使用 看例子: // 1. 初步使用 function sayHi($name){ echo $name .' say hi' ."<br>"; } call_user_func('sayHi','Bob'); call_user_func('sayH

PHP 函数之 call_user_func &amp;amp; call_user_func_array

call_user_func_array (callable $callback, array $param_arr) 參数1: 调用一个回调函数, 參数2: 数组參数是回调函数的參数. call_user_func(callable $callback, $mixed $parameter, $mixed $...) 參数1:调用的回调函数 參数2-n:回调函数的參数. 比較这两者的不同哦. 前者的第二个參数必须是 数组. 情况一:调用普通的函数. <? php function barber

php回调函数call_user_func和call_user_func_array详解

call_user_func($fun); call_user_func 函数类似于一种特别的调用函数的方法,使用方法如下: 1.调用 普通函数: <?php function a($b, $c) { echo $b; echo $c; } call_user_func('a', "111", "222"); call_user_func('a', "333", "444"); //显示 111 222 333 444

php函数: call_user_func()和call_user_func_array() 使用详解

call_user_func 该函数允许直接调用自己写的函数,可以直接传入一些参数. 使用方法1:给自己写的函数传入参数,一个特别的调用函数的方法. 1 <?php 2 3 funciotn test1($a,$b){ 4 echo $a; 5 echo $b; 6 } 7 8 call_user_func('test1',"11","22"); 9 call_user_func('test1',"33","44");/

php函数call_user_func、call_user_func_array使用方法

使用方法: 1. function aa() { echo 'cjy'; } call_user_func('aa'); 2. class A { static function aa($a, $b, $c) { echo "{$a}{$b}{$c}"; } } call_user_func('A::aa', 1, 2, 3); 3. class A { static function aa($a, $b, $c) { echo "{$a}{$b}{$c}"; }

PHP中的__toString方法

_toString方法是在打印对象时自动调用的魔术方法,如果不声明会报以下错 Catchable fatal error: Object of class String could not be converted to 示例: PHP里有很多的字符串函数,假如要先过滤字符首尾的空格,再求出字符串的长度,一般会这么写: strlen(trim($str)); 如果要实现JS里的链式操作,比如像下面这样,应该怎么实现? $str->trim()->strlen() 很简单,先实现一个String

php中的回调函数

php中提供了两个内置的回调函数call_user_func().call_user_func_array(). 这两个函数的区别是: call_user_func_array(callable $callback,array $param_arr)是以数组的形式接受回调函数和参数的. call_user_func($callback, 参数1, 参数2)参数的个数是根据回调函数来决定的. 下面是一些常见的回调函数使用的例子: //普通函数 function f1($param1,$param2