• Works
    • 笔记
    • 资源
  • 关于我

拉风的博客

PHP源码

PHP-Zend引擎剖析之CV变量(三)

Posted by raphealguo on 27 十一月, 2013 1 Comment
作者:raphealguo    文章来自http://rapheal.sinaapp.com/tag/php%E6%BA%90%E7%A0%81/

前言

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

我们先看一下在zend_language_parser.y里边是如何书写赋值语句的语法规则(在没有任何说明的情况下,本文讨论的仅仅是:$var = 1;这样一条简单的赋值语法规则)。

[Read more...]

Posted in: PHP, Zend源码, 源码 | Tagged: PHP源码, Zend源码

PHP-Zend引擎剖析之Hello World(二)

Posted by raphealguo on 20 十一月, 2013 2 Comments
作者:raphealguo    文章来自http://rapheal.sinaapp.com/tag/php%E6%BA%90%E7%A0%81/

前言

这一次,我围绕Hello World来展开Zend虚拟机的执行过程。Hello World的PHP版本:

<?php
     echo ‘Hello World’;
?>

前一篇文章聊到的词法分析阶段就会把上边的脚本分析出一个Token序列:
我们得到一个Token序列:T_OPEN_TAG, T_ECHO, T_CONSTANT_ENCAPSED_STRING, ‘;’, T_CLOSE_TAG。但在Zend虚拟机执行的过程中,是怎么去分析这个Token序列的?

[Read more...]

Posted in: PHP, Zend源码, 源码 | Tagged: PHP源码, Zend源码

PHP-Zend引擎剖析之词法分析(一)

Posted by raphealguo on 14 十一月, 2013 5 Comments
作者:raphealguo    文章来自http://rapheal.sinaapp.com/tag/php%E6%BA%90%E7%A0%81/

前言

闲来研究一下PHP底层的Zend引擎源码,Zend引擎是PHP脚本的虚拟机。
在PHP上层有SAPI接口,负责对各个接入层的抽象,例如PHP在Apache模块里边的实现,Fast-CGI的实现,命令行的实现。在PHP底层便是Zend虚拟机,Zend虚拟机负责解析PHP语法的文件,上层可以在虚拟机中注册函数/变量提供给虚拟机调用,例如从Apache分发过来的HTTP请求经过PHP的Apache SAPI接口后,便会注册一些$_COOKIE、$_GET等全局变量,而在命令行模式下便没有这些跟HTTP相关的全局变量。
Zend引擎跟其他编译器跟解释器一样,会经历词法分析/语法分析,语法分析后会生成op code,也就是PHP的中间代码,最终Zend虚拟机执行的是op code。第一篇贡献给Zend引擎的理当是词法分析的源码剖析。
PS:分析的代码是PHP-5.5.5的源码包,下载地址:http://windows.php.net/downloads/releases/php-5.5.5-src.zip。
[Read more...]
Posted in: PHP, Zend源码, 源码 | Tagged: PHP源码, Zend源码

标签

BFS CA CSS dfs ExtCSS HTTP HTTPS jQuery MVVM PHP源码 Sizzle ssl uglifyjs Vue Vue2.x webview模拟器 Web开发 Zend源码 上线 云南游 入门 前端工程 加密 协议 工具 提测 效率 数字签名 数学 旅游 游戏 源码 灰度 监控 硬件 算法 网络模型 计算机 认证

近期评论

  • Augustmyv 发表在《如何学习Vue2源码》
  • Holographicuqj 发表在《如何学习Vue2源码》
  • Foamcub 发表在《如何学习Vue2源码》
  • liusir 发表在《关于我》
  • 匿名 发表在《一次安全可靠的通信》

链接表

  • bang
  • DIV.IO
  • 小木舟

Copyright © 2021 拉风的博客.

Theme by ThemeHall.