表达式语法
编辑该页面表达式语法
ExpressionLanguage组件使用一个特定的语法基于树枝的表达式语法。在本文档中,可以找到所有支持的语法。
支持文字
该组件支持:
- 字符串——单引号和双引号(例如。
“你好”
) - 数字——如。
103年
- 数组——使用类json符号(如。
[1,2]
) - 散列——使用类json符号(如。
{foo: '酒吧'}
) - 布尔值- - - - - -
真正的
和假
- 零- - - - - -
零
- 指数-也被称为科学(如。
1.99 e + 3
或1)依照
)
谨慎
一个反斜杠(\
)必须由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
美元ret1=美元expressionLanguage- >评估(“生活= =一切”,(“生活”= >10,“一切”= >22]);美元ret2=美元expressionLanguage- >评估(“生命>一切”,(“生活”= >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
在从吗18
来45
。
三元运算符
foo吗?“是的”:“不”
foo ?:“不”
(等于foo吗?喷火:“不”
)foo吗?“是的”
(等于foo吗?“是”:“
)
内置对象和变量
当使用该组件在一个Symfony应用程序中,某些对象和变量自动注入Syob娱乐下载mfony,这样你就可以在表达式中使用它们(例如请求,当前用户,等等):