2011-09-16 76 views
1

這就是我想做的事:如何替換具有未知參數名稱的函數?

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

這應返回:酒吧

我知道,如果我這樣定義我的功能,這會工作:

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

由於你可能已經猜到了,$ unknown的變量名是未知的。

我需要這個,因爲我正在使用apd編寫一個PHP沙箱。我想用我自己的函數不知道的PHP腳本替換exec($ cmd,$ ret)。

因此,如果未知的PHP腳本是這樣的:

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

我有一個問題,我自己的函數替換做的exec()模擬相同的功能。

回答

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

+0

看起來不錯!但是,如果foo($ var,$ unknown);包括的。我正在運行我的沙盒,如下所示:php sandbox.php unknown.php和sandbox.php包含include $ argv [1];最後。建議? – Glaslos

+0

@Peter:顯示代碼。 – Jon

+0

http://www.ideone.com/Xsnwy – Glaslos

相關問題