在我们学习任何源码的时候,你都必须先对源码树有所了解,以便你能快速对PHP的文件进行划分。这是编写扩展所需的最基本能力。
主要文件和文件夹
文件/文件夹 内容
php-src PHP中主要的.c文件和.h头文件;你可以在这里看到PHP全部API、宏等内容的定义
php-src/ext 用于存放动态链接库(模块)和内部模块;默认情况下,这个文件夹里的内容是PHP官方模块,已经内置到PHP源码中。并且从PHP4.0开始,你已经可以采用动态加载的方法编译安装它们。(通过--enable-shared)
php-src/main 用于存放PHP各种宏定义
php-src/pear PHP扩展和应用库(PEAR),该文件夹存放着PEAR核心文件
php-src/sapi 各种和服务器交互的接口
TSRM Zend和PHP的安全线程资源管理器
ZendEngine2 用于存放Zend引擎;这里你可以看到全部的Zend API定义、宏定义等等
我们可不是在学习PHP源码,所以就不在此展开了。但是你应该看看以下几个文件:
php-src/main/php.h,该文件定义了大多数PHP宏和API
php-src/Zend/Zend.h,该文件定义了大多数Zend引擎的宏
php-src/Zend/zend_API.h,该文件定义了Zend引擎的API
同时你也应该看看这些文件,包括Zend executor,PHP初始化文件等等。看过这些文件之后试试找出各个文件和模块之间的依赖关系。它们之间有什么关系,如何相互使用的。在这个过程中你可以学到PHP官方的编码规范。为了扩展PHP,你应该尽快熟悉这种规范。