2011-09-23 75 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可以为您的域设计,那可能是更简单的解决方案。

相关问题