7

我想知道是否有人知道可以嵌入到 php 中的不错的脚本语言?Javascript 将是最受欢迎的,尽管有几次尝试,但它们要么过于不稳定/缓慢/过时(phpjs、j4p5),要么在共享主机上启动和运行非常痛苦(pecl spidermonkey)。

背景是:我想要一种用于控制服务器上的 php 的语言,但它也应该支持一些逻辑,所以 yaml、xml 或 json 是不够的。我查看了 LUA 解释器和 mediakwiki 的“Winter”,但它们要么依赖外部引擎,要么具有任何强大的绑定。

pecl spidermonkey 绑定似乎是最完整的,您可以将变量、函数和整个对象注册到 js 引擎。有谁知道任何可能接近我正在寻找的系统或语言?

最好的

罗尔夫

4

3 回答 3

4

我没有看到很多引擎允许在 PHP 中启用另一种脚本语言 :-(
即使在 PECL 上,似乎也没有很多条目(参见“语言”类别,例如:只有一个,你已经知道)
在 PEAR 上,我什至找不到任何符合您标准的东西......

我玩过一点蜘蛛猴(请参阅我博客上的这篇文章,法语),这很有趣,是的。但是几个月前我写那篇文章的时候它还不是很稳定——从那以后只有几次提交。所以,我理解为什么托管公司不会在他们的服务器上提供它......
即使我希望他们:允许非 PHP 开发人员为您的应用程序开发脚本可能会很棒!

不过有一个问题:为什么你想要/需要除 PHP 之外的另一种语言?

我的意思是 PHP 已经安装在你的服务器上,你显然有使用它的经验,而且它是一种非常强大的语言......那么你为什么想要/需要使用其他东西呢?

使用 PHP 的 eval,您甚至可以考虑执行“动态”PHP 代码(是的,eval 就是 eval 等等,我知道 ^^)

另一种选择,使用“exec”之类的东西,如果你在 Linux 服务器上,启动某种 shell-script ;但我肯定更喜欢用 PHP 编码而不是 shell,而且我当然不是唯一的 ^^


无论如何,留意你可能得到的答案,这也可能让我很感兴趣;-)

于 2009-07-28T16:43:14.643 回答
2

我理解你的担心。即使对于受信任的来源,PHP 也提供了比 Web 请求的整个环境所需的更多访问权限。即使脚本编写者是受信任的,即使他们只能因脚本错误而伤害自己,一个更受约束的脚本环境对他们来说更容易使用并且更容易为您提供支持。

你想要一些可以被沙箱化的东西,它只能访问你明确分配给它的范围的资源,并且在“游戏中的游戏”运行时环境中执行,而不是在 PHP 自己的环境中执行。

一种方法是对用户提交的脚本使用 Web 模板语言。这些提供了一定程度的控制(例如变量分配),并关闭了其他选项,例如您不能编写无限循环。为此,我在 Java 应用程序中使用了 Velocity。我认为 Smarty 之类的东西可能适用于 PHP,但我没有直接使用它的经验。

另一种方法是,如果脚本需要执行的操作受域的限制,则实现域特定语言 (DSL)。我在这个答案中提到了这一点。

除此之外,我不知道脚本语言的任何纯 PHP 实现。这是我对自己感兴趣的事情。

于 2009-07-28T17:31:54.687 回答
1

Symfony 有ExpressionLanguage组件:

ExpressionLanguage 组件提供了一个可以编译和评估表达式的引擎。表达式是一个返回值的单行符(主要是但不限于布尔值)。

...

该组件的目的是允许用户在配置中使用表达式来实现更复杂的逻辑。对于一些示例,Symfony 框架在安全性、验证规则和路由匹配中使用表达式。

该语言的示例如下:

# Get the special price if
user.getGroup() in ['good_customers', 'collaborator']

# Promote article to the homepage when
article.commentCount > 100 and article.category not in ["misc"]

# Send an alert when
product.stock < 15
于 2019-04-24T14:14:30.360 回答