将函数作为参数传递

时间:2013-03-16 20:05:59

标签: php

我不知道这是否可行,但我想通过将函数作为参数传递来调用函数中的函数,例如......

timeThis(test());

function test(){
   $i = 0;
   echo "add 1";
   $i += 1;
   echo "minus 10";
   $i -= l0;
}

function timeThis($fun){
   $timer = new timer;
   $timer->start();
   $fun;
   $timer->pause();
   echo $timer->get();
}

在PHP中可能有这样的东西吗?问候。

2 个答案:

答案 0 :(得分:0)

是的,可以(在PHP 5.4中):

function timeThis(callable $fun){
   ...
   $fun();
   ...
}

用法:

$var = function () { ... }
timeThis($a);

或者您可以通过字符串调用函数:

function aFunc() { ... }
call_user_func('aFunc');

答案 1 :(得分:0)

这适用于所有版本的PHP5。你可以使用“callable”,但是我认为这限制了你的php5.4。

timeThis('test');

function test(){
   $i = 0;
   echo "add 1";
   $i += 1;
   echo "minus 10";
   $i -= l0;
}

function timeThis($fun){
   $timer = new timer;
   $timer->start();
   $fun();
   //or
   call_user_func($fun);
   $timer->pause();
   echo $timer->get();
}