PHP函数运行一个函数(基于字符串)?

时间:2012-07-28 05:46:11

标签: php function

是否有运行基于字符串,数组或类似函数的PHP函数或命令?基本上,如果传递字符串“time”,我希望返回time()。理想情况下,我希望这也支持传递的参数。不过,我只是希望这是针对个别功能的。我出于显而易见的原因,我不想eval()整个代码块。

这样的事情是否存在 - 或者,最好是 - 它在PHP中是原生的吗?

2 个答案:

答案 0 :(得分:3)

尝试call_user_func()http://php.net/manual/en/function.call-user-func.php

第一个参数是表示函数名称的字符串。第二个参数可以是单个参数,也可以是参数数组。

编辑:

它甚至会支持像time()这样的本机函数。试试吧:

echo call_user_func( 'time' );

答案 1 :(得分:3)

您可以使用包含函数名称的变量调用函数,也可以将任何参数传递给该函数。尝试:

<?php

$func = 'strtoupper';

$res = $func('i am uppercase');

echo $res; // I AM UPPERCASE

同样请参阅variable functionsvariable variables。如上所述,call_user_func()也有效。

为安全起见,您可以致电:

if (function_exists($func)) { ... }

在调用函数之前,请确保避免错误。您可以使用ReflectionFunctionAbstract::getNumberOfParameters来确定函数接受的参数数量。