2011-09-23 87 views
11

我正在開發一個基於Web的應用程序,用PHP5編寫,基本上它是一個在數據庫之上的UI。爲了給用戶一個更靈活的工具,我想嵌入一種腳本語言,以便他們可以做更復雜的事情,比如發起SQL查詢,做循環和將數據存儲在變量中等等。在我的業務領域中,Python廣泛用於腳本編寫,但我也在考慮製作一個簡單的域特定語言。該腳本必須包裝我現有的PHP類。在Python Web應用程序中嵌入python/dsl腳本

我在尋求如何解決這個開發任務的建議嗎?

更新:我會嘗試在PostgreSQL中使用PLPGSQL在數據庫中編寫腳本。這會做現在,但我不能這樣使用我的PHP類。 Lua的方法很吸引人,看起來我想要什麼(除了它不是Python)。

+0

安全?這將成爲一個Web應用程序? –

+1

PHP是一種美妙的腳本語言。你爲什麼不能使用它? –

+0

@tandu:因爲PHP不支持沙箱,這可能是需要的 – aurora

回答

2

如果你沒有綁定到python,你可以使用例如Lua作爲腳本語言。 Lua是一種非常輕量級的語言,易於學習,並且在考慮嵌入的情況下開發。目前已經有至少兩種PHP擴展可用,這很好地將Lua嵌入到PHP中,因此提供了允許PHP和Lua之間的應用程序訪問的可能性。看一看:

http://pecl.php.net/package/lua

這其中也有一些很好的例子:

http://phplua.3uu.de/

我已經使用了後者一個有點簡單的實驗和它的作品相當不錯。

0

你可以在沒有Python的情況下通過ie完成。解析用戶輸入以獲得預定義的「標籤」並返回結果。

1

安全,保密,安全!只是想把它弄明白。你似乎試圖做的事聽起來很可怕,但它是你的腳射擊。

另外,你似乎試圖做的是混合使用兩種不同的服務器端語言,除非有一個在PHP之上運行的我不知道的Python的實現(PHPython?)。

如果您願意讓PHP代碼以某種方式調用Python,那麼您應該可以通過eval()或exec()等方法輕鬆完成此操作。請參閱how to input python code in run time and execute it?

至於封裝您的PHP類,我不確定您是否可以完成此功能。您可以使用Python類鏡像您的PHP類,並使用類似JSON的方式在兩者之間傳輸數據。

+0

有PIP http://www.csh.rit.edu/~jon/projects/pip/它旨在用python包裝php類,但是看起來它不是一個非常活躍的項目。 –

+0

大聲笑,我應該知道它在那裏。 – ThatAintWorking

0

你有兩個選擇:

  1. 使用MVC
  2. 推遲你的邏輯到後端

如果你在做你的邏輯做你的邏輯在PHP的前端前端,你可以看看一個PHP5 MVC框架,如Zend

如果你推遲你的邏輯,你可以使用你喜歡的任何腳本語言。例如,您可以使用Python的SQLAlchemy來訪問您的數據庫。

3

如何在客戶端上執行腳本。這將確保最大的安全性並節省服務器資源。

換句話說,Javascript會成爲您的腳本平臺。你所做的就是將後端的功能作爲javascript函數公開。取決於您的應用當前如何編寫,可能需要後端工作。

哦,順便說一下,你不限於JavaScript的實際語言。谷歌「編譯爲JavaScript」,首先應該是你可以使用的語言列表。

1

我不知道任何預製解決方案。但pypy是一個用RPython編寫的Python實現,具有sandboxing功能,可以讓您運行不受信任的代碼。

但是,如果一些明顯的DSL可以爲您的域設計,那可能是更簡單的解決方案。

相關問題