如何用未知参数名称替换函数


How to replace a function with unknown argument names?

这就是我想做的:

$var = "foo";  
$unknown = "";  
function do($arg1, $arg2) {  
    $arg2 = "bar";
    magic($arg2);
    }  
do($var, $unknown);  
echo $unknown;

这应该返回:bar

我知道,如果我像这样定义我的函数,这是可以工作的:

function do($arg1, $unknown) {
    global $unknown;
    $unknown = "bar";
}

你可能已经猜到了,$unknown的变量名是未知的。

我需要这个,因为我正在使用apd写一个PHP沙箱。我想在PHP脚本中替换exec($cmd, $ret),我不知道自己的函数。

如果未知的PHP脚本是这样的:

$foo = "";
exec('whois google.com', $foo);
echo $foo;

我将有一个问题,用我自己的函数do()代替exec模拟相同的功能。

您希望通过引用传递参数:

$var = "foo";  
$unknown = "";  
function foo($arg1, &$arg2) {    // NOTE EXTRA "&"
    $arg2 = "bar";
}  
foo($var, $unknown);  
echo $unknown;

查看效果