表达式语法

编辑该页面

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

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

表达式语法

ExpressionLanguage组件使用一个特定的语法基于树枝的表达式语法。在本文档中,可以找到所有支持的语法。

支持文字

该组件支持:

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

谨慎

一个反斜杠(\)必须由4个反斜杠转义(\\\\)在一个字符串和8反斜杠(\\\\\\\\在正则表达式):

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

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

处理对象

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

访问公共属性

可以通过使用访问对象的公共属性语法类似于JavaScript:

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

这将打印出密脆

调用方法

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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”)”));

这将打印出

提示

阅读如何注册你自己的函数表达式中使用,请参阅“扩展ExpressionLanguage”。

使用数组

如果你通过一个数组一个表达式,使用[]类似于JavaScript语法来访问数组键:

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

这将打印出42

支持运营商

该组件有很多运营商:

算术运算符

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

例如:

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

这将打印出42

按位运算符

  • &(和)
  • |(或)
  • ^(xor)

比较运算符

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

提示

为了测试一个字符串匹配正则表达式,使用逻辑运营商结合匹配接线员:

1
美元expressionLanguage- >评估(不(" foo "匹配" /酒吧/ ")”);/ /返回true

您必须使用括号,因为一元运算符在二元运算符优先级匹配

例子:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
美元ret1=美元expressionLanguage- >评估(“生活= =一切”,数组(“生活”= >10,“宇宙”= >10,“一切”= >22));美元ret2=美元expressionLanguage- >评估(“生命>一切”,数组(“生活”= >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”= >“亚瑟”,“姓”= >“削弱”)));

这将打印出亚瑟削弱

数组运算符

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

例如:

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

美元的派系将评估真正的

数字运算符

  • . .(范围)

例如:

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

这将评估真正的,因为user.age在从吗1845

三元运算符

  • foo吗?“是的”:“不”
  • foo ?:“不”(等于foo吗?喷火:“不”)
  • foo吗?“是的”(等于foo吗?“是”:“)
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。