表达语言组件
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.5,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
表达语言组件
ExpressionLanguage组件提供了一个可以编译和计算表达式的引擎。表达式是返回值的一行代码(主要是布尔值,但不限于此)。
2.4
在Symfony 2.4中引入了ExpressionLanguage组件。ob娱乐下载
安装
你可以用两种不同的方式安装组件:
- 通过Composer安装(
ob娱乐下载symfony /表达式语言
在Packagist); - 使用官方Git存储库(https://github.com/ob娱乐下载symfony/expression-language).
表达式引擎如何帮助我?
该组件的目的是允许用户在配置中使用表达式来处理更复杂的逻辑。例如,Symfony2框架在安全性、验证规则和ob娱乐下载路由匹配中使用了表达式。
除了在框架本身中使用该组件外,ExpressionLanguage组件是一个完美的候选组件业务规则引擎.这个想法是让网站管理员在不使用PHP和不引入安全问题的情况下,以动态的方式配置内容:
1 2 3 4 5 6 7 8
#当article. commentcount > 100和article. getgroup()在['good_customers', 'collaborator']中获得特价类别不在["misc"] #当product.stock . #
表达式可以被视为一个非常受限的PHP沙盒,不受外部注入的影响,因为必须显式地声明表达式中哪些变量可用。
使用
ExpressionLanguage组件可以编译和求值表达式。表达式是一行程序,通常返回布尔值,可由在类中执行表达式的代码使用如果
声明。表达式的一个简单例子是1 + 2
.您还可以使用更复杂的表达式,例如someArray [3] .someMethod(酒吧)
.
该组件提供了两种处理表达式的方法:
- 评价:表达式被求值而不被编译成PHP;
- 编译:表达式被编译成PHP,因此它可以被缓存和求值。
组件的主类是ExpressionLanguage:
1 2 3 4 5 6 7
使用ob娱乐下载\组件\ExpressionLanguage\ExpressionLanguage;$语言=新ExpressionLanguage ();回声$语言->评估(“1 + 2”);//显示3回声$语言->编译(“1 + 2”);//显示(1 + 2)
传入变量
你也可以将变量传递到表达式中,它可以是任何有效的PHP类型(包括对象):
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用ob娱乐下载\组件\ExpressionLanguage\ExpressionLanguage;$语言=新ExpressionLanguage ();类苹果{公共$各种;}$苹果=新苹果();$苹果->各种=“密脆”;回声$语言->评估(“fruit.variety”,数组(“水果”= >$苹果,));
缓存
该组件提供了一些不同的缓存策略,请在使用解析器缓存缓存表达式.
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。