2012-10-28 135 views
0

爲什麼下面的代碼無法編譯:爲什麼我不能以這種方式調用eval()?

<?php 
    $str = "echo \"ok\""; 
    $func = "eval"; 
    $func ($str); 
?> 

和PHP告訴我的eval是不確定的。

+1

你在評估嗎?真? –

+7

因爲'eval'實際上不是一個函數,所以它是一個語言結構:*「注意:因爲這是一個語言結構而不是一個函數,所以不能使用變量函數調用它。」* http://php.net/manual /en/function.eval.php'<-'(它寫在文檔中)。 –

+0

@Asad感謝starx的回答,我終於知道「evaling eval」在你的評論中意味着什麼; -P正確,那就是我在做的 – daisy

回答

2

在PHP中,eval是一個「語言結構」,而不是一個函數。 (注意它在語法高亮編輯器中轉換關鍵字顏色。)不能使用變量函數語法$func()來調用語言結構,或者與其他函數特定的東西(如is_callable())一起使用語言結構。

http://www.php.net/manual/en/functions.variable-functions.php

變量函數將不與語言結構如回聲,打印,未設置(),isset(工作),空(),包括,需要等。利用包裝函數將任何這些結構用作可變函數。

1

eval不是一個函數,它的語言結構和變量函數不能用於語言結構。

-1

你有Wrong..the代碼,也許像例如..

<?php 
    $eval_code = '$my_name = "Swashata";' . 
        '$your_name = "John";' . 
        'return $your_name;' . 
        'echo $my_name;'; 
    $the_name = eval($eval_code); 
    echo '<p>$the_name has got a value ' . $the_name . '</p>'; 
?> 
+1

所以......你的代碼有什麼重大區別? OP的代碼有什麼問題?它爲什麼會失敗? –

1

eval()不能使用變量函數調用。如果你不明白variable function是什麼?看看你的代碼的以下部分

$func = "eval"; 
    $func ($str); //Here $func becomes eval upon execution making it a variable function 

如果你看一下手動參考,它清楚地noted

注:由於這是一個語言結構,而不是一個功能,它可以不使用所謂的可變函數。

相關問題