ExpressionLanguage组件
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.3,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
ExpressionLanguage组件
ExpressionLanguage组件提供了一个引擎,这个引擎可以编译和评估表达式。一个表达式是一个一行程序,返回一个值(通常,但不限于,布尔值)。
安装
1
美元作曲家需要symfony /表达式ob娱乐下载语言
请注意
如果你安装这个组件之外的Symfony应用程序,你必须要求ob娱乐下载供应商/ autoload.php
文件在你的代码,使作曲家提供的类加载机制。读这篇文章为更多的细节。
表达式引擎怎么能帮助我吗?
组件的目的是允许用户使用更复杂的逻辑表达式内部配置。对于一些例子,Symfony框架使用表达式在安ob娱乐下载全、验证规则和路线匹配。
除了使用组件框架本身,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
使用ob娱乐下载\组件\ExpressionLanguage\ExpressionLanguage;美元expressionLanguage=新ExpressionLanguage ();var_dump (美元expressionLanguage- >评估(“1 + 2”));/ /显示3var_dump (美元expressionLanguage- >编译(“1 + 2”));/ /显示(1 + 2)
传递变量
还可以通过变量的表达式,它可以是任何有效的PHP类型(包括对象):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用ob娱乐下载\组件\ExpressionLanguage\ExpressionLanguage;美元expressionLanguage=新ExpressionLanguage ();类苹果{公共美元各种;}美元苹果=新苹果();美元苹果- >各种=“密脆”;var_dump (美元expressionLanguage- >评估(“fruit.variety”,(“水果”= >美元苹果)));/ /显示“密脆”
有关更多信息,请参见表达式语法条目,尤其是处理对象和使用数组。
谨慎
当使用变量表达式,避免将不可信数据的数组变量。如果无法避免,sanitize非字母数字的字符不可信的数据,以防止恶意用户注入控制字符和改变表达式。
缓存
组件提供了一些不同的缓存策略,阅读更多关于他们使用解析器缓存缓存表达式。
AST倾销和编辑
AST (抽象语法树)的表达式可以作为解释倾倒和操纵倾销和操纵AST的表达式。