PHP函数名称即时

时间:2009-09-14 18:37:31

标签: php

我有一个相当愚蠢的PHP问题:D!我想简化以下声明:

function hello_input() {
    return 'Hello World';
}

$helper = 'hello';

$helper = $helper . '_input';

$data = $helperinput();

我想简化的具体部分是将_input添加到$ he​​lper,以便调用正确的函数。

我想到了类似的东西,但它不起作用:

$data = $helper. 'input'();
or
$data = $helper. 'input' . ();

有什么想法吗?

谢谢, 最大

4 个答案:

答案 0 :(得分:13)

使用call_user_func,例如$data = call_user_func($helper.'input');

答案 1 :(得分:0)

首先将整个函数名称转换为字符串。

$helper = 'hello';
$func = $helper . '_input';
$data = $func();

PHP调用此variable functions。另请参阅variable variables

答案 2 :(得分:0)

$helper = 'hello_';
$data = $helper.'input';
call_user_func($data);

这应该可以让你在那里大部分时间。祝你好运!

Docs here

答案 3 :(得分:0)

您是否希望根据输入调用代码?你永远不应该试着这样做。这使人们有机会执行任意代码。即使你看不清楚,它仍然是一种潜在的攻击方法。

你可能想要的是一个与输入匹配的switch语句(或链接if语句)并发送正确的函数。