ExpressionLanguage组件

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.3,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

ExpressionLanguage组件

ExpressionLanguage组件提供了一个引擎,这个引擎可以编译和评估表达式。一个表达式是一个一行程序,返回一个值(通常,但不限于,布尔值)。

安装

您可以安装组件在两个不同的方面:

表达式引擎怎么能帮助我吗?

组件的目的是允许用户使用更复杂的逻辑表达式内部配置。对于一些例子,Symfony框架使用表达式在安欧宝娱乐app下载地址全、验证规则和路线匹配。

除了使用组件框架本身,ExpressionLanguage组件是一个完美的候选人的基础业务规则引擎。这个想法是为了让一个网站的站长配置在一个动态的方式不使用PHP和不引入安全问题:

1 2 3 4 5 6 7 8
#获取特价如果user.getGroup () (“good_customers”、“合作者”)# article.commentCount时促进文章首页> 100条。类别不(misc”) # product.stock时发送警报

表达式可以被视为一个非常限制PHP沙箱和不受外部注入您必须显式地声明的变量在一个表达式。

使用

ExpressionLanguage组件可以编译和评估表达式。经常返回一个布尔表达式是一行程序,可以使用代码执行的表达式如果声明。一个表达式的一个简单的例子1 + 2。您还可以使用更复杂的表达式,如someArray [3] .someMethod(酒吧)

组件提供了两种方法来处理表达式:

  • 评价:没有被编译PHP计算表达式;
  • 编译:表达式编译PHP,所以它可以缓存和评估。

组件的主类ExpressionLanguage:

1 2 3 4 5 6 7
使用欧宝娱乐app下载地址\组件\ExpressionLanguage\ExpressionLanguage;美元语言=ExpressionLanguage ();var_dump (美元语言- >评估(“1 + 2”));/ /显示3var_dump (美元语言- >编译(“1 + 2”));/ /显示(1 + 2)

表达式语法

看到表达式语法学习的语法ExpressionLanguage组件。

传递变量

还可以通过变量的表达式,它可以是任何有效的PHP类型(包括对象):

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用欧宝娱乐app下载地址\组件\ExpressionLanguage\ExpressionLanguage;美元语言=ExpressionLanguage ();苹果{公共美元各种;}美元苹果=苹果();美元苹果- >各种=“密脆”;var_dump (美元语言- >评估(“fruit.variety”,数组(“水果”= >美元苹果)));

这将打印“密脆”。有关更多信息,请参见表达式语法条目,尤其是表达式语法表达式语法

缓存

组件提供了一些不同的缓存策略,阅读更多关于他们使用解析器缓存缓存表达式

AST倾销和编辑

AST (抽象语法树)的表达式可以作为解释倾倒和操纵倾销和操纵AST的表达式

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。