2014-12-24 71 views
2

我正在開發一款應用程序,允許管理員爲他們的店鋪設置條件以提供特別的服務。例如:如何在沒有eval()的情況下存儲邏輯數據?

if (($cartTotal > 200) && (has_item_in_cart($item))) { // free shipping, % discount, etc } 

他們將有一個圖形用戶界面來設置條件,我想知道如何存儲信息。到目前爲止我唯一提出的解決方案是生成一個if聲明並將其作爲文本存儲在數據庫中,然後使用eval()進行評估。不過,我在使用eval()的公開應用中令人難以置信的猶豫。有沒有其他的選擇?

它將利用Laravel,如果有任何可能的包。

+0

你需要創建你自己的解析器,永遠不要使用eval! –

+1

當評估由未知或無能力方提供的字符串時,'eval()'只是危險的。 – AlienWebguy

+0

您需要具體化您要評估的表達式。如果它真的只是簡單的ANDing/ORing和一些預定義的函數調用,一個簡單的樹並循環它就可以完成這項工作。 - 當傳入的代碼是管理員定義時,'eval'完全適用。 noobs避開'eval'是一個很好的建議。任何更熟練的人都會意識到,這是將腳本與編譯語言分開的一個特性。由於模因排除並不聰明。 (順便說一句,'eval'和'include'是一回事。) – mario

回答

相關問題