发生了什么
表达式
表达式是一个储存了一系列委托与一系列运算符的容器,当表达式解析时,所有委托被执行并转换为元素,然后重复使用优先级最高的运算符计算其相关的两个元素,重复这一过程直到所有运算符都被处理过,表达式解析结束,表达式的结果是剩下的唯一元素。
委托
每次解析表达式时,执行的相同函数也可能会产生不同结果(比如说random()
),因此表达式解析前函数只会作为一个执行函数的委托存于表达式中,在表达式解析开始时才会转换为元素,委托有以下类型:
CALL_SELF
调用自身,格式:元素()CALL_METHOD
调用函数,格式:元素.method()GET_FIELD
获取属性,格式:元素.fieldPARSE_VARIABLE
检查文本是不是变量SUB_EXPRESSION
处理执行的子表达式
调用函数时
在了解委托后你可能可以很容易的理解,函数 random()
其实只是文本 random
执行了 PARSE_VARIABLE
委托,真正的函数存在全局变量中。
最后更新于