虽然用了书名号,但它是我的一个业余项目而已,它以Sara Golemon在2005年著作的《Extending and Embedding PHP》一书为蓝本翻译修改而来。这里先对Sara女士表示感谢,为我们奉献了这么优秀的一本技术图书。截止到目前(2011年),这几年以来,PHP的应用在中国突飞猛进,已经渗透到了互联网的各个方面,现在每个公司里都不可能一点没有PHP的影子了。有关PHP语言自身的书籍也是层出不穷,而有关PHP扩展开发以及PHP内核方面的文字却都比较零散,比较系统的有TIPI项目、Zend上面的几篇文章以及《Extending and Embedding PHP》这本书的英文版,不能不说这直接限制住了部分人在PHP语言上的深入研究与学习。我在学校的时候就翻阅过这本书的电子版,但因为是英文的终究没有在那时深入研究下去,也算是一件憾事。 浏览本项目,希望你已经具备以下技能:
比较熟悉PHP语言。熟悉基本的C语言
我希望你能在Linux上来实践这个项目里的东西,那会比较容易一些,当然win也没关系。
本项目不是一个翻译工作,而是以翻译为起点的一个系统的、持续的跟踪介绍PHP内核相关知识的系统,相对于原书来讲,本项目的内容有以下不同
基准PHP版本由5.1改为了5.3.6,也就是说本书的例子默认都是以PHP5.3.6为例的。记录的是2011年初次编辑的时候
改写了大部分例子,方便像我一样的初学者。
会根据PHP的发展与自身的进步不断添加新的内容、优化原有内容。
现在项目的第一期的工作(初译)已经完成了,正在进入后续发布工作,每校正完一节就发布一节,期间如果朋友你发现了错误,还请帮忙斧正,我将在项目日志里声明以示感谢。此外还希望你能持续关注本项目,让我们一起为中国PHP事业的发展奉献一份力量。
目录中汉字部分代表已经翻译完成的章节,带链接的表示已经发布的,未待链接的表示正在校正即将发布的。
PHP的生命周期
让我们从SAPI开始
PHP的启动与终止
PHP的生命周期
线程安全
小结
PHP变量在内核中的实现
变量的类型
变量的值
创建PHP变量
变量的存储方式
变量的检索
类型转换
小结
内存管理
内存管理
引用计数
总结
配置编译环境
编译前的准备
PHP编译前的config配置
Unix/Linux平台下的编译
在Win32平台上编译PHP
小结
第一个扩展
一个扩展的基本结构
编译我们的扩展
静态编译
编写函数
小结
函数的返回值
一个特殊的参数:return_value
引用与函数的执行结果
小结
函数的参数
zend_parse_parameters
Arg Info 与类型绑定
小结
Array与HashTable
数组(C中的)与链表
操作HashTable的API
在内核中操作PHP语言中数组
小结
PHP中的资源类型
复合类型的数据——资源
Persistent Resources
资源自有的引用计数
小结
PHP中的面向对象(一)
zend_class_entry
定义一个类
定义一个接口
类的继承与接口的实现
小结
PHP中的面向对象(二)
生成对象的实例与调用方法
读写对象的属性
小结
启动与终止的那点事
关于生命周期
MINFO与phpinfo
常量
PHP扩展中的全局变量
PHP语言中的超级全局变量
小结
ini配置文件
读写ini配置
小结
流式访问
流的概览
打开与读写流
Static Stream Operations
小结
流的实现
PHP Streams的本质
流的封装——wrapper
实现wrapper
Manipulation
状态与属性读取
小结
有趣的流
流的上下文
流的过滤器
小结
配置和链接
Autoconf
库的查找
强制模块依赖
Speaking the Windows Dialect
小结
扩展生成器
ext_skel生成器
PECL_Gen生成器
小结
设置宿主环境
嵌入式SAPI
构建并编译一个宿主应用
通过嵌入包装重新创建cli
老技术新用
小结
高级嵌入式
回调到php中
错误处理
初始化php
覆写INI_SYSTEM和INI_PERDIR选项
捕获输出
同时扩展和嵌入
小结