2009-11-28 52 views
0

無效代碼:使用字符串在PHP中聲明函數?

$functionName = 'sayThis'; 

function $functionName($string) { 
    echo $string; 
} 

我可以做這樣的事?

+1

你真的不想這樣做。可怕的想法。 – 2009-11-29 00:09:06

+1

有助於理解你爲什麼要這樣做。你想達到什麼目的? – 2009-11-29 00:20:58

+0

我在許多文件中都有相同的函數(processFormSubmission())。這個函數目前有一個名字,但是根據它所在的文件做了幾個不同的事情。有時候同一個函數名可以包含在一次執行中。如果是這種情況,我會得到一個錯誤,說該函數已經被聲明。我想動態地命名該函數,所以我沒有名稱衝突。該函數的動態分配名稱將存儲在一個類中。 – 2009-11-29 08:03:14

回答

2

我不建議你這樣做,但如果你堅持,使用eval是一個選項。
要非常小心壽。並遠離任何用戶輸入!

<?php 
$name = 'sayThis'; 

$code = <<<PHP 
function $name(\$string) { 
    echo \$string; 
} 
PHP; 
eval($code); 

$name('This is NOT a good idea!'); 
?> 
+0

+1這看起來像回答了OP的問題。這是要求你小心的事情之一。 – 2009-11-29 02:18:39