前言
讨论完虚拟机的基本流程后,接下来就是把细节的地方揪干净,接下来几篇文章先揪一下PHP的变量。我们知道PHP的变量是弱类型的,但是我并不打算从这个开始分析,我先把最简单的赋值语句:<?php $var = 1;?>开始分析整个变量赋值的过程,同时解释一下PHP的CV(compiled variable)变量。
从上一篇《PHP-Zend引擎剖析之Hello World(二)》知道每条语法规则从编译到运行需要经历以下两个步骤:
- 词法分析,接着语法分析匹配中规则
- 虚拟机执行一条opcode涉及到几个东西:opcode的操作数op1,op2以及opcode的返回结果result(三个参数对应的类型);opcode对应的handler。
我们先看一下在zend_language_parser.y里边是如何书写赋值语句的语法规则(在没有任何说明的情况下,本文讨论的仅仅是:$var = 1;这样一条简单的赋值语法规则)。