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


PHP function to run a function (based on string)?

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

像这样的东西存在吗?或者,最好是PHP原生的吗?

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

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

编辑:

正如您所要求的,它甚至将支持诸如time()之类的本机函数。试一下吧:

echo call_user_func( 'time' );

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

<?php
$func = 'strtoupper';
$res = $func('i am uppercase');
echo $res; // I AM UPPERCASE

请参阅变量函数和变量。如前所述,call_user_func()也起作用。

为了安全起见,您可以拨打:

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

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