表达式语法
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.1,现已不再维护。
读本页的更新版本用于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
$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”=>“亚瑟”,“姓”=>“削弱”,]));
这会打印出来亚瑟削弱
.
数组运算符
在
(包含)不是在
(不包含)
例如:
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
类用户{公共$年龄;}$用户=新用户();$用户->年龄=34;$expressionLanguage->评估(的用户。年龄在18..45', [“用户”=>$用户,]);
它的值是真正的
,因为user.age
在范围内18
来45
.
三元运算符
foo吗?“是”:“不是”
Foo ?: 'no'
(等于foo吗?Foo:“不”
)foo吗?“是的”
(等于foo吗?“是的”。
)