在PHP网页应用中嵌入Python/DSL脚本
我正在开发一个基于网页的应用程序,使用的是PHP5,简单来说就是在一个数据库上面做了个用户界面。为了给用户提供更灵活的工具,我想嵌入一种脚本语言,这样他们就可以做一些更复杂的事情,比如执行SQL查询、进行循环、存储数据到变量等等。在我的业务领域,Python被广泛用于脚本编写,但我也在考虑创建一种简单的特定领域语言。这个脚本需要能够调用我现有的PHP类。
我想请教一下,应该如何着手进行这个开发任务呢?
更新:我会尝试在数据库中使用PostgreSQL的PLPGSQL进行脚本编写。这个方法暂时可以用,但我无法通过这种方式使用我的PHP类。Lua的方案很吸引人,似乎正是我想要的(而且它不是Python)。
6 个回答
安全、安全、安全!我先把这句话说出来。你想做的事情听起来有点吓人,但这是你自己的选择。
另外,你似乎想要把两种不同的服务器端语言混在一起,除非我不知道有一种在PHP上运行的Python实现(比如说PHPython?)。
如果你愿意让你的PHP代码以某种方式调用Python,使用像eval()或exec()这样的函数应该能很容易做到。你可以看看这个链接,了解如何在运行时输入Python代码并执行它:如何在运行时输入Python代码并执行它?
至于如何将你的PHP类封装起来,我不太确定你能否完全做到这一点。你可以用Python类来镜像你的PHP类,并使用像JSON这样的格式在两者之间传输数据。
你可以考虑在客户端进行脚本编写。这样可以确保安全性最大化,同时也能节省服务器的资源。
换句话说,JavaScript就是你用来编写脚本的平台。你需要做的就是把后端的功能以JavaScript函数的形式暴露出来。根据你现在应用的写法,这可能需要一些后端的工作,也可能不需要。
哦,对了,实际上你并不局限于使用JavaScript这门语言。你可以搜索“编译成JavaScript”,第一个结果应该会列出你可以使用的其他语言。
如果你不一定要用Python的话,可以考虑用Lua作为脚本语言。Lua是一种非常轻量级的语言,容易上手,而且它的设计就是为了方便嵌入其他程序。现在已经有至少两个PHP扩展可以把Lua很好的嵌入到PHP中,这样就能让你的应用程序的PHP部分和Lua部分互相访问了。你可以看看这个链接:
http://pecl.php.net/package/lua
这个链接里还有一些不错的例子:
我自己也用过后一个链接里的内容做了一些简单的实验,效果还不错。