我想知道是否有人可以嵌入PHP的一个很好的脚本语言的认识? JavaScript的将是最喜欢的,虽然也有几次尝试,他们要么过于不稳/慢/过时的(phpjs,j4p5)或真正的痛苦起床和共享主机(PECL SpiderMonkey的)运行。
其背景是:我想有一个用于控制在服务器上的PHP语言,但它也应该支持一些逻辑,所以YAML,XML或JSON是不够的。 我看着LUA口译和mediakwiki开展的“冬季”,但他们都要么依靠外部引擎或具有强大约束力的任何责任。
PECL的SpiderMonkey结合的似乎是最完整的,你可以瓦尔,功能和整体目标的JS引擎注册。 有谁知道任何系统或语言可能接近我所期待的吗?
最好
罗尔夫
我理解你的关切。 即使是信任的来源,PHP提供了更多的访问比需要将Web请求的整个环境。 即使脚本编写者非常信任,即使他们只能用一个脚本错误害了自己,较多受约束的脚本环境将是他们更容易使用,更容易为你的支持。
你想要的东西,可以关闭沙箱,只能访问你的资源明确指定其范围和执行的“一戏中戏”的运行时环境,而不是在PHP的自己。
一种方法是使用用户提交的脚本网页模板语言。 这些提供一定量的控制(例如变量赋值),和封闭的其他选项,例如也可以不写无限循环。 我用速度为此,在Java应用程序中; 我觉得像Smarty的可能在PHP中工作,但我没有使用它用于此目的的直接经验。
另一种方法,如果需要什么样的脚本来执行由域的约束,是实现领域特定语言(DSL)。 我提到了这个答案 。
除此之外,我不知道脚本语言的任何纯PHP实现的。 这件事情我很想自己。
我没有作用似乎很多引擎,允许在PHP中启用其他脚本语言:-(
即使在PECL,似乎没有被许多条目(见“语言”类别 ,比如:只有一个,你已经知道了)
和梨,我甚至不觉得任何会符合您的标准...
我已经与SpiderMonkey的发挥了位(见这篇文章在我的博客 ,在法国),它还挺好玩的,是的。 但它是不是真的稳定了几个月前,当我写的文章 - 而且只以来少数的提交。 所以,我明白了为什么托管公司将不提供它自己的服务器上...
即使我希望他们:可能是巨大的,允许非PHP developpers开发应用程序的脚本!
但一个问题:为什么你想/需要比PHP另一种语言?
我的意思是PHP已经安装在服务器上,你obvisously与它的经验,这是一个非常强大的语言......那么,为什么你想/需要与别的工作?
使用PHP的eval,你甚至可以考虑执行“动态”的PHP代码(没错,EVAL是评估和所有这一切,我知道^^)
另一种选择,使用这样的东西“EXEC”等会,如果你是一个Linux服务器上,推出某种形式的shell脚本的; 但我会definitly喜欢在PHP比外壳编码,并且我肯定不是唯一的一个^^
总之,密切关注你可能会得到答案,这可能让我感兴趣挺有点太;-)
Symfony的有表达式语言成分:
的表达式语言成分所提供的发动机,可以编译和计算表达式。 一个表达式是一衬垫,它返回一个值(主要是,但不限于,布尔值)。
...
该部件的目的是允许用户使用表达式内部配置更复杂的逻辑。 对于一些例子中,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