PHP内核-代码的执行(二)
学习来源:http://www.php-internals.com/book/?p=chapt02/02-00-overview
最开始学习PHP的时候感觉上手真的好容易,噼里啪啦一个回车 “Hello word !” 出来了,很少去关注为什么它会出来?只知道语法必须要这样写,少一个分号都会报错。那底层到底是什么东西能够识别PHP语法呢!
其实PHP是一个脚本语言,它不像JAVA,C程序; 而我们编写的代码就是PHP接收的输入数据,是PHP内核对我们编写的代码进行解释和运算, 最后返回相应的运算结果。
然而,PHP与我们自己平时写的一般的C程序有所不同的是, 我们的程序一般用来解决某个具体问题, 而PHP本身实现了把用户的逻辑“翻译”为机器语言来执行的功能, 这也是各种编译语言与承载具体业务逻辑的程序代码的一个明显区别。 于是PHP就多出一个把用户代码“翻译”成具体操作的步骤:词法分析、语法分析。
当用户代码输入给PHP内核去执行的时候, PHP内核会对PHP代码进行词法分析和语法分析, 词法分析是把PHP代码分割成一个个的“单元”(TOKEN), 语法分析则将这些“单元”转化为Zend Engine可执行的操作。 然后PHP内部的Zend Engine对这些操作进行顺次的执行。 Zend Engine是PHP内核的核心部分,负责最终操作的执行和结果的返回, 可以理解成为PHP内核中的“发动机”。
于是PHP代码的执行过程可以简单描述为下图: