表达式语法

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.8,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

表达式语法

ExpressionLanguage组件使用了基于Twig的表达式语法的特定语法。在本文档中,您可以找到所有受支持的语法。

支持文字

该组件支持:

  • 字符串-单引号和双引号(例如:“你好”
  • 数字——如。103
  • 数组-使用类似json的符号(例如:[1,2]
  • 散列-使用类似json的符号(例如:{foo: 'bar'}
  • 布尔值-真正的而且
  • -

谨慎

反斜杠()必须用4个反斜杠()和8个反斜杠()的正则表达式:

1 2
回声expressionLanguage->评估(’“\ \ \ \”);//打印\expressionLanguage->评估(' ' a\\\\b ' '匹配' /^a\\\\\\\\b$/ ' ');//返回true

控制字符(例如:\ n)中的表达式被替换为空格。为了避免这种情况,使用一个反斜杠转义序列(例如。\ \ n).

使用对象

将对象传递到表达式时,可以使用不同的语法来访问对象的属性和调用方法。

进入公共物业

对象上的公共属性可以使用语法,类似于JavaScript:

12 3 4 5 6 7 8 9 10 11 12 13 14
苹果公共各种;}苹果苹果();苹果->各种=“密脆”;var_dump (expressionLanguage->评估(“fruit.variety”数组“水果”= >苹果,)));

这会打印出来密脆

调用方法

语法也可以用来调用一个对象的方法,类似于JavaScript:

12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21
机器人公共函数sayHi问候数组();0<+ +) {问候[] =“嗨”;}返回内爆(' '问候).“!”;}}机器人机器人();var_dump (expressionLanguage->评估(“robot.sayHi(3)”数组“机器人”= >机器人,)));

这会打印出来嗨嗨嗨!

使用函数

还可以使用与PHP和JavaScript相同的语法在表达式中使用注册函数。ExpressionLanguage组件默认带有一个函数:常数(),它将返回PHP常量的值:

1 2 3 4 5
定义(“DB_USER”“根”);var_dump (expressionLanguage->评估(“常数(“DB_USER”)”));

这会打印出来

提示

若要阅读如何注册要在表达式中使用的自己的函数,请参阅“扩展表达语言".

使用数组

如果将数组传递给表达式,请使用[]语法来访问数组键,类似于JavaScript:

1 2 3 4 5 6 7 8
数据数组“生活”= >10“宇宙”= >10“一切”= >22);var_dump (expressionLanguage->评估(data[“生命”]+ data[“宇宙”]+ data[“一切”]数组“数据”= >数据,)));

这会打印出来42

支持运营商

该组件带有很多操作符:

算术运算符

  • +(添加)
  • -(减法)
  • (乘法)
  • /(部门)
  • (模量)
  • **(战俘)

例如:

1 2 3 4 5 6 7 8
var_dump (expressionLanguage->评估(“生命+宇宙+一切”数组“生活”= >10“宇宙”= >10“一切”= >22,)));

这会打印出来42

按位运算符

  • (和)
  • |(或)
  • (xor)

比较运算符

  • = =(等于)
  • = = =(相同)
  • ! =(不等于)
  • = = !(不一样的)
  • <(小于)
  • >(大于)
  • < =(小于或等于)
  • > =(大于等于)
  • 匹配(正则表达式匹配)

提示

来测试字符串是否存在匹配正则表达式,使用逻辑运算符与匹配接线员:

1
expressionLanguage->评估('not ("foo"匹配"/bar/")');//返回true

你必须使用圆括号,因为一元运算符优先于二进制操作符匹配

例子:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
ret1expressionLanguage->评估(“生命=一切”数组“生活”= >10“宇宙”= >10“一切”= >22,));ret2expressionLanguage->评估(“生活>一切”数组“生活”= >10“宇宙”= >10“一切”= >22,));

两个变量都被设为

逻辑运算符

  • 而且& &
  • ||

例如:

1 2 3 4 5 6 7 8
受潮湿腐烂expressionLanguage->评估(生命<宇宙或生命<一切数组“生活”= >10“宇宙”= >10“一切”= >22,));

美元受潮湿腐烂变量将被设置为真正的

字符串运算符

  • (连接)

例如:

1 2 3 4 5 6 7
var_dump (expressionLanguage->评估(“姓~ " ~名”数组“firstName”= >“亚瑟”“姓”= >“削弱”,)));

这会打印出来亚瑟削弱

数组运算符

  • (包含)
  • 不是在(不包含)

例如:

12 3 4 5 6 7 8 9 10 11 12 13 14
用户公共集团;}用户用户();用户->组=“human_resources”派系expressionLanguage->评估(的用户。集团在["human_resources", "marketing"]'数组“用户”= >用户,));

美元的派系会计算为真正的

数字运算符

  • ..(范围)

例如:

12 3 4 5 6 7 8 9 10 11 12 13 14
用户公共年龄;}用户用户();用户->年龄=34expressionLanguage->评估(的用户。年龄在18..45'数组“用户”= >用户,));

它的值是真正的,因为user.age在范围内1845

三元运算符

  • foo吗?“是”:“不是”
  • Foo ?: 'no'(等于foo吗?Foo:“不”
  • foo吗?“是的”(等于foo吗?“是的”。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。