没有合适的资源?快使用搜索试试~ 我知道了~
首页《深入理解PHP内核》
《深入理解PHP内核》
需积分: 10 13 下载量 171 浏览量
更新于2023-06-04
评论
收藏 2.31MB PDF 举报
TIPI项目主要关注PHP内部实现和相关技术的研究,作为互联网爱好者,无论是互联网产品还是电子书籍, 我们都希望能有良好的使用及阅读体验,我们也会将精力投入到用户体验上,尽可能为大家提供一个更好的使用感受。
资源详情
资源评论
资源推荐
第一章第一章 准备工作和背景知识准备工作和背景知识
千里之行,始于足下。千里之行,始于足下。
在开始进入PHP的内核实现之前,需要做一些准备工作,也需要了解一些背景知识。本章主要涉及PHP
源码的获取, PHP源码的编译,从而得到我们的调试环境。
接下来,我们将简单描述PHP源码的结构以及在*nix环境和Windows环境下如何阅读源码。 最后我们介
绍在阅读PHP源码过程中经常会遇到的一些语句。
如果你没有接触过PHP,或者对PHP的历史不太了解,我们推荐你先移步百度百科 PHP, 这里有PHP
非常详细的历史介绍,它包括PHP的诞生,PHP的发展,PHP的应用,PHP现有三大版本的介绍以及对于
PHP6的展望等。
目前PHP6已经停止开发了,PHP6的设计初衷是向后不兼容以及Unicode支持等。目前 很
多特性已经在PHP5.3和PHP5.4中实现了:比如5.4中的traits,支持C#类似的getter&setter语法
(目前处在实现阶段), 基本类型的类型提示等。
下面,我们将介绍源码阅读环境的搭建。
第一节第一节 环境搭建环境搭建
在开始学习PHP实现之前,我们需要一个实验和学习的环境。下面介绍一下怎样在*nix环境下准备和搭
建PHP环境。
(*nix指的是类Unix环境,比如各种Linux发行版,FreeBSD, OpenSolaris, Mac OS X等
操作系统)
1.获取获取PHP源码源码
为了学习PHP的实现,首先需要下载PHP的源代码。下载源码首选是去PHP官方网站
http://php.net/downloads.php下载, 如果你喜欢使用svn/git等版本控制软件,也可以使用svn/git来获取最新
的源代码。
# git 官方地址
git clone https://git.php.net/repository/php-src.git
# 也可以访问github官方镜像
git clone git://github.com/php/php-src.git
cd php-src && git checkout origin PHP-5.3 # 签出5.3分支
# svn地址不变,不过不推荐从这里签出代码
cd ~
svn co http://svn.php.net/repository/php/php-src/branches/PHP_5_2 php-src-5.2 #5.2版本
svn co http://svn.php.net/repository/php/php-src/branches/PHP_5_3 php-src-5.3 #5.3版本
笔者比较喜欢用版本控制软件签出代码,这样做的好处是能看到PHP每次修改的内容及日志信息, 如
果自己修改了其中的某些内容也能快速的查看到,如果你想修复PHP的某个Bug或者提交新功能的话, 有版
本控制也会容易的多,更多信息可以参考附录:怎样为PHP做贡献。
目前PHP已经迁移到Git了,PHP的wiki上有关于 迁移到Git的说明,以及使用Git的流程
在笔者编写这些内容的时候PHP版本控制是还基于SVN的,上面提到的github镜像地址目前已
经没有同步更新了, 由于把svn同步到git会对系统性能造成明显影响,加上社区还没有就到底
是否迁移到git达成一致,所以也就停止了更新。 目前很多开源软件都开始转向了分布式版本控
制系统(DVCS), 例如Python语言在转向DVCS时对目前的分布式版本控制系统做了一个详细
的对比, 如果以前没有接触过,笔者强烈建议试试这些版本控制软件。现在Github的同步是实
时的。 所以习惯Github的话,基本上可以把Github当做官方版本库了。
2.准备编译环境准备编译环境
在*nix环境下,需要安装编译构建环境。如果你用的是Ubuntu或者是用apt做为包管理的系统,可以通
过如下命令快速安装:
sudo apt-get install build-essential
如果你使用的是Mac OS X,则需要安装Xcode。Xcode可以在Mac OS X的安装盘中找到,如果你有
Apple ID的话, 也可以登陆苹果开发者网站http://developer.apple.com/下载。
如果你不愿意下载庞大的Xcode,也可以去https://github.com/kennethreitz/osx-gcc-
installer下载安装包, 只安装所需的命令行工具。
3. 编译编译
下一步可以开始编译了,本文只简单介绍基本的编译过程,不包含Apache的PHP支持以及Mysql等模块
的编译。 相关资料请自行查阅相关文档。 如果你是从svn/git签出的代码则需要执行代码根目录的buildconf
脚本以生成所需要的构建脚本。
cd ~/php-src
./buildconf
执行完以后就可以开始configure了,configure有很多的参数,比如指定安装目录,是否开启相关模块
等选项:
有的系统自带的autoconf程序版本会有Bug,可能导致扩展的配置无法更新,如果在执
行./buildconf时 报错,可以根据出错信息安装合适版本的autoconf工具。
./configure --help # 查看可用参数
为了尽快得到可以测试的环境,我们仅编译一个最精简的PHP。通过执行 ./configure --disable-all来进
行配置。 以后如果需要其他功能可以重新编译。如果configure命令出现错误,可能是缺少PHP所依赖的
库,各个系统的环境可能不一样。 出现错误可根据出错信息上网搜索。 直到完成configure。configure完成
后我们就可以开始编译了。
./configure --disable-all
make
在*nix下编译过程序的读者应该都熟悉经典的configure make,make install吧。执行make之后是否需
要make install就取决于你了。 如果install的话最好在configure的时候是用prefix参数指定安装目录, 不建议
安装到系统目录, 避免和系统原有的PHP版本冲突。 在make 完以后,在sapi/cli目录里就已经有了php的可
以执行文件. 执行一下命令:
./sapi/cli/php -v
-v参数表示输出版本号,如果命令执行完后看到输出php版本信息则说明编译成功。 如果是make install
的话可以执行$prefix/bin/php这个路径的php。 当然如果是安装在系统目录或者你的prefix目录在$PATH环境
变量里的话,直接执行php就行了。
在只进行make而不make install时,只是编译为可执行二进制文件,所以在终端下执行的
php-cli所在路径就是php-src/sapi/cli/php。
后续的学习中可能会需要重复configure make 或者 make && make install 这几个步骤。
Windows环境的编译环境的编译
Windows环境下的编译可以参考官方Wiki的说
明:https://wiki.php.net/internals/windows/stepbystepbuild
推荐书籍和参考推荐书籍和参考
Gnu Make中文书册
《Autotools A Practioner's Guide》
第二节第二节 源码结构、阅读代码方法源码结构、阅读代码方法
PHP源码目录结构源码目录结构
俗话讲:重剑无锋,大巧不工。PHP的源码在结构上非常清晰。下面先简单介绍一下PHP源码的目录结
构。
根目录根目录: / 这个目录包含的东西比较多,主要包含一些说明文件以及设计方案。 其实项目中的这些
README文件是非常值得阅读的例如:
/README.PHP4-TO-PHP5-THIN-CHANGES 这个文件就详细列举了PHP4和PHP5的一些差
异。
还有有一个比较重要的文件/CODING_STANDARDS,如果要想写PHP扩展的话,这个文件一
定要阅读一下, 不管你个人的代码风格是什么样,怎么样使用缩进和花括号,既然来到了这样
一个团体里就应该去适应这样的规范,这样在阅读代码或者别人阅读你的 代码是都会更轻松。
build 顾名思义,这里主要放置一些和源码编译相关的一些文件,比如开始构建之前的buildconf脚本
等文件,还有一些检查环境的脚本等。
ext 官方扩展目录,包括了绝大多数PHP的函数的定义和实现,如array系列,pdo系列,spl系列等函
剩余267页未读,继续阅读
sinat_17670879
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0