如何替换具有未知参数名称的函数?

时间:2011-09-16 08:04:17

标签: php arguments

这就是我想要做的事情:

$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时遇到问题。

1 个答案:

答案 0 :(得分:1)

您想要pass the parameter by reference

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

<强> See it in action