zoukankan      html  css  js  c++  java
  • 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('sayHi','Jack');

    输出:

    Bob say hi

    Jack say hi

    2. call_user_func用于递归函数中

    著名的斐波那契函数,如果哪天我们改变了函数名即Factorial,那么该函数会报错,因为内部也使用到了Factorial。

    function Factorial($i=1) {
      return ($i==1 ? 1 : $i*Factorial($i-1));
    }

    改进一下:

    function FactorialImprove($i=1){
        return ($i == 1 ? 1 : $i * call_user_func(__FUNCTION__,$i-1));
    }

    这样的话如果外部函数名怎么变都不会出错。这里用到了PHP中的 __FUNCTION__ 魔法常量。

    3. 类似的call_user_func_array

    该函数接收两个参数,第一个参数不变,函数名,第二个是参数数组。

    $func = function($arg1, $arg2) {
        return $arg1 * $arg2;
    };
    
    var_dump(call_user_func_array($func, array(2, 4)));

    其实 call_user_func 函数在事件处理中有起到非常重要的作用。

    看下一篇,PHP的事件处理。

  • 相关阅读:
    Python面向对象的魔术方法
    Python面向对象基础
    Python异常处理
    Python装饰器实现函数动态类型检查
    Python装饰器
    Python IO
    HTTP协议
    应用层常用协议
    读写分离
    MySQL优化三之MySQL配置
  • 原文地址:https://www.cnblogs.com/mafeifan/p/4322238.html
Copyright © 2011-2022 走看看