2010-11-09 44 views
-2

可能重複:
When (if ever) is eval NOT evil?什麼時候(如果有的話)是eval不是邪惡的?

我聽說很多地方PHP的eval函數往往不是答案。鑑於PHP 5.3的LSB和閉包,我們沒有理由依賴於eval或create_function。

是否有任何可以想象的情況,eval是PHP 5.3中最好的(只有?)答案?

這個問題不是關於eval是否一般是邪惡的,因爲它顯然不是。

答案摘要:

* Evaluating numerical expressions (or other languages "safe" subsets of PHP) 
* Unit testing 
* Interactive PHP "shell" 
* Deserialization of trusted var_export 
* Some template languages 
* Creating backdoors for administers and/or hackers 
* Compatibility with < PHP 5.3 
* Checking syntax (possibly not safe) 
+4

男人。這裏有一個**完全相同的標題。當你寫這篇文章時,它肯定會顯示給你。 – 2010-11-09 08:05:03

+1

100%重複:http://stackoverflow.com/questions/951373/when-is-eval-evil-in-php – pltvs 2010-11-09 08:06:23

+0

讓我檢查... – Genius 2010-11-09 08:08:29

回答

0

我會傾向於只說「每當評估代碼不受用戶輸入」 - 但我不知道你爲什麼會的eval()那麼你已經應該知道的代碼。 ()在模板系統中使用eval()是我偶然發現的東西,但在我看來,它似乎是include()或require()(在這些情況下)的替代方法,似乎是合理的如果不使用eval(),更改解決方案可能會帶來相同的結果。

0

爲了克服PHP的缺點。

在我們的項目中,我們需要一個類eval來擴展自動加載中的動態類。

eval("class {$baseName}Model extends {$baseName}ModelParent{}"); 

儘管它可能看起來作爲代碼的氣味,我就不贅述了,但它是一個必不可少的步驟,我們可以透明地支持多種略微不同的項目。

相關問題