**千里之行,始于足下。**
在开始进入PHP的内核实现之前,需要做一些准备工作,也需要了解一些背景知识。本章主要涉及PHP源码的获取,PHP源码的编译,从而得到我们的调试环境。
接下来,我们将简单描述PHP源码的结构以及在*nix环境和Windows环境下如何阅读源码。最后我们介绍在阅读PHP源码过程中经常会遇到的一些语句。
如果你没有接触过PHP,或者对PHP的历史不太了解,我们推荐你先移步[百度百科 PHP](http://baike.baidu.com/view/99.htm),这里有PHP非常详细的历史介绍,它包括PHP的诞生,PHP的发展,PHP的应用,PHP现有三大版本的介绍以及对于PHP6的展望等。
> 目前PHP6已经停止开发了,PHP6的设计初衷是向后不兼容以及Unicode支持等。目前 很多特性已经在PHP5.3和PHP5.4中实现了:比如5.4中的traits,支持C#类似的getter&setter语法(目前处在实现阶段), 基本类型的类型提示等。
下面,我们将介绍源码阅读环境的搭建。
[看到这有什么想法或疑问?点击这里参与讨论吧!](http://www.php-internals.com/book/?p=chapt01/01-00-prepare-and-background&ref=chm&v=TIPI_2014-04-29_V0.8.3#comment)
- 第一章 准备工作和背景知识
- 第一节 环境搭建
- 第二节 源码结构、阅读代码方法
- 第三节 常用代码
- 第四节 小结
- 第二章 用户代码的执行
- 第一节 生命周期和Zend引擎
- 第二节 SAPI概述
- Apache模块
- 嵌入式
- FastCGI
- 第三节 PHP脚本的执行
- 词法分析和语法分析
- opcode
- opcode处理函数查找
- 第四节 小结
- 第三章 变量及数据类型
- 第一节 变量的结构和类型
- 哈希表(HashTable)
- PHP的哈希表实现
- 链表简介
- 第二节 常量
- 第三节 预定义变量
- 第四节 静态变量
- 第五节 类型提示的实现
- 第六节 变量的生命周期
- 变量的赋值和销毁
- 变量的作用域
- global语句
- 第七节 数据类型转换
- 第八节 小结
- 第四章 函数的实现
- 第一节 函数的内部结构
- 函数的内部结构
- 函数间的转换
- 第二节 函数的定义,传参及返回值
- 函数的定义
- 函数的参数
- 函数的返回值
- 第三节 函数的调用和执行
- 第四节 匿名函数及闭包
- 第五节 小结
- 第五章 类和面向对象
- 第一节 类的结构和实现
- 第二节 类的成员变量及方法
- 第三节 访问控制的实现
- 第四节 类的继承,多态及抽象类
- 第五节 魔术方法,延迟绑定及静态成员
- 第六节 PHP保留类及特殊类
- 第七节 对象
- 第八节 命名空间
- 第九节 标准类
- 第十节 小结
- 第六章 内存管理
- 第一节 内存管理概述
- 第二节 PHP中的内存管理
- 第三节 内存使用:申请和销毁
- 第四节 垃圾回收
- 新的垃圾回收
- 第五节 内存管理中的缓存
- 第六节 写时复制(Copy On Write)
- 第七节 内存泄漏
- 第八节 小结
- 第七章 Zend虚拟机
- 第一节 Zend虚拟机概述
- 第二节 语法的实现
- 词法解析
- 语法分析
- 实现自己的语法
- 第三节 中间代码的执行
- 第四节 PHP代码的加密解密
- 第五节 小结
- 第八章 线程安全
- 第二节 线程,进程和并发
- 第三节 PHP中的线程安全
- 第九章 错误和异常处理
- 第十章 输出缓冲
- 第十六章 PHP语言特性的实现
- 第一节 循环语句
- foreach的实现
- 第二十章 怎么样系列(how to)
- 附录
- 附录A PHP及Zend API
- 附录B PHP的历史
- 附录C VLD扩展使用指南
- 附录D 怎样为PHP贡献
- 附录E phpt测试文件说明
- 附录F PHP5.4新功能升级解析
- 附录G:re2c中文手册