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的事件處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM