Sat 9 Jun 2007
《PHP 源代码分析》v0.0.1
Posted by yAnbiN under PHP
[31] Comments
目前在 PHP 社区尤其是国内的 PHP 社区对 PHP 内核这方面讨论的比较少。我平时常看一些 PHP 源码,对 PHP 的运行机制算是有一些认识吧,因此我打算写一些这方面的文章,算是抛砖引玉。最终目标我希望可以做成一个关于 PHP 内核的中文百科全书。应该说这是一个不算太小的工程,依我个人之力几乎不可能完成。更何况老子曾经曰过:“知者不言,言者不知”,相信潜在水下面的大牛(水牛?^_^)还有 N 多。所以希望大家群策群力,共同完成这个项目。
整个项目我初步打算以 PHP 5.2.x 的源码为研究对象,侧重于对 Zend Engine 的表述,兼顾一些 SAPI 层。下面是我列出的一份清单,大家看看还有没有什么遗漏或者内容编排不合理之处。请诸位畅所欲言,有啥说啥,即使跑题也没关系~ 😀
PHP 源代码分析 V0.0.1
- 第一章 构建系统
- 准备工具、库及需要具备的基础知识;
- 如何编译不同平台的版本?编译时的各个选项是什么含义?源码的目录结构。
- 如何创建一个 PHP 扩展/模块?如何创建一个 Zend 扩展?
- 如何调试 PHP?如何调试 PHP/Zend 扩展?
- 第二章 PHP 与 SAPI 的生命周期
- 脚本的运行周期,一切从 main() 开始;
- 模块/脚本的起始与终止函数;
- PHP SAPI 协议;
- 嵌入式 PHP 设计。
- 第三章 内存管理
- Zend 的内存管理器框架;
- 内存申请与释放流程,垃圾回收;
- 持久化(persistence)
- 第四章 线程安全
- 为何会有这个问题?Zend Engine 是如何解决的?
- 我是否该启用 ZTS?各有什么优缺点?
- 如何构建一个 ZTS 的程序/扩展?
- 第五章 变量与常量
- PHP 中的数据类型。
- 变量、常量与静态变量。
- 引用计数机制;
- 资源的创建与回收;
- 未来字符串的 UNICODE 支持、JIT 支持。
- 第六章 函数
- 函数的内部布局;
- 函数的定义;
- 如何获取函数的参数、可选参数、参数默认值;
- 函数的返回值;
- 第七章 类与对象
- 类的内部布局(属性、方法);
- 构造函数与析构函数;
- 类的继承与转换(up casting 与 down casting);
- 接口(轻量级的类),微观上与类的差别;
- 类之间的 up casting 和 down casting。
- stdClass。
- 第八章 错误与异常
- 什么是错误、什么是异常。两者的区别;
- 如何创建和抛出异常;
- try/catch 的设计与实现;
- 第九章 流(Streams)支持
- 这方面我接触较少,内容待定;
- 第十章 虚拟机
- 脚本编译机制(词法分析、语法分析);
- 脚本的执行机制(CALL|SWITCH|GOTO);
- 各个符号表的作用;
- 开发 OPCode 缓存器;
- 开发 PHP 调试器;
- 附录
- 完整的 PHP API、Zend API 以及宏(Micro)参考(长期工程)
- Zend Engine 1 的主要特性,与 Zend Engine 2的主要差别;
- Zend Engine 3 的主要特性,与 Zend Engine 2的主要差别;
- 相关资源
- 项目发起:Ben (ben.yan at msn dot com
- 项目参与:Ben (ben.yan at msn dot com,http://www.yAnbiN.org)
- 项目启动:2007/06/09 (希望可以在明年奥运会开幕前完成 :D)
- 项目进度:
- 2007/06/09 项目启动,讨论项目规划;
- 2007/xx/xx 待续……
支持一下。 🙂
支持一下2
我希望参与你这次计划,我已经给你发了邮件了:)
多谢楼上哥们的参与,已回复~
我没收到哦~~~
晕~~
首先非常感谢哥们的积极响应。既然还没收到那我就在这里回复一下吧,同时也可以让更多的朋友看到。
这个计划随时欢迎各个有兴趣的人的加入。加入主要体现在这几个方面的加入:撰写相关章节的文章、汇总整理某些 Zend API 以及宏的说明、提出某些相关的问题供某些写作人员撰写文章时进行有的放矢的参考或其他你认为对这个计划有帮助的任何的问题与建议。您可以看看自己擅长哪个方面然后发信给我以便互相进行协作。
你好,我现在在开发一个动态语言的脚本解释器,一直都想研究一下PHP的源代码。希望我能加入你的计划,在某一方面帮助你。
我对C++,java语言方面比较擅长,PHP也用过,但我用C++ builder,很少用VC。
另:ben.yan at msn dot com真的是邮箱吗?我没有用过MSN 🙁
等待回复
欢迎加入!交流才能提高~
MSN 那样写是为了防止垃圾邮件。联系时把 at 替换成“@”,dot 替换成“.”就可以了。中间不要有空格。没用过 MSN 也没关系,直接发邮件联系即可。
支持,不会,等着看。。
只能纯支持~~~ 边都沾不上….
老兄,进展如何了?等待你的成果呢!
路过,支持,非常支持~~
呃,,可不可以弄快点呢?看目录觉得好兴奋啊。嘿
严重支持,期待大作早日发布
期待啊!非常
只能纯支持~~~ 边都沾不上….
看了你的文章,感觉收获很多,谢谢
非常高兴看到如此脱离烦躁专心做学问的人啊,
能不能定期公开一些成果给大家学习学习!
太感动了。。。目前进展如何?
上海PEA见过面了,支持
发完留言才发现留下真名没太大意义,补充说明一下我的论坛ID是mannoo
支持啊~~最近也想开始看看PHP的源代码。
博主加油啊。
呵呵,忘了wp评论不能包含网址:
我也研究ZE很久了,也写过一些相关的资料,不知道博主是否有兴趣合作,;)
具体内容可以参看我的个人blog
没问题。这个课题已经由于自身懒惰荒废了有些时日了。近期正有重新拾起来的打算,正好一起来写。:)
呵呵,好啊,我们就先把以往的资料规整一下,去除重复,补充遗漏,看看还缺什么,再写一些
😉
支持!有人提纲携领的指引一下就好多了。
这个项目还在进行中吗?
项目停止了吗?
怎么就一篇文章?
正想扩展php,对php的内核也很感兴趣,作phpcode很久了,现在也应该来弄一下他的底层架构了,我也加入
centerqi#gmail.com
支持一个,
很好啊,虽然是学php没有多久,但对php内核还是很感兴趣。
你加油啊!希望早日看到大作!