使用本章讨论的工具, 你就可以快速的开发php扩展, 并且让你的代码相比手写更加不 容易产生bug. 现在是时候转向将php嵌入到其他项目了. 剩下的章节中, 你将利用php环境 和强大的php引擎为你的已有项目增加脚本能力, 使它可以为你的客户提供更多更有用的 功能.
如果你的扩展将在未知或不可控制的环境构建, 让它足够聪明以应付奇怪的环境就非常重要. 使用php提供的unix和windows上强有力的脚本能力, 你应该可以检测到麻烦并在未知的管理员需要电话求助之前给于她一个解决方案. 现在你已经有使用php api从头建立php扩展的基础能力了, 你可以准备学习一下使用php提供的扩展开发工具把自己从繁重的重复劳动中解放出来了, 使用它们可以快速, 准确的建立
过滤器和上下文可以让普通的流类型行为被修改, 或通过INI设置影响整个请求, 而不需要直接的代码修改. 使用本章设计的计数, 你可以使你自己的包装器实现更加强大, 并且可以对其他包装器产生的数据进行改变. 接下来, 我们将离开PHPAPI背后的工作, 回到php构建系统的机制, 产生更加复杂的扩展链接到其他应用, 找到更加容易的方法, 使用工具集处理重复的工作.
无论是暴露远程网络I/O还是本地数据源的流资源, 都允许你的扩展在核心数据上挂在操纵函数的钩子, 避免重新实现单调的描述符管理和I/O缓冲区工作. 这使得它在用户空间环境中更加有用, 更加强大. 下一章将通过对过滤器和上下文的学习结束流包装层的学习, 过滤器和上下文可以用于选择默认的流行为, 甚至过程中修改数据.
本章中你接触了一些基于流的I/O的内部表象. 下一章将演示做呢样实现自己的协议包装, 甚至是定义自己的流类型.
在这章,你探索了PHP中最古老的特性,也可以说是PHP健壮可移植性的最大的问题所在。对于每个有用的INI设置,它对编程的障碍就是随时都会出现它,这让编程越来越复杂。INI设置是一把双刃剑,所以在使用之前一定要深思熟虑,不然造成的后果将是长久的;胡乱使用将使你的系统出现很多不可预测的问题。 在接下来的三章中,你将专研数据流API,从使用开始,进一步提升到数据流的实现层,包装、环境以及过滤器
通过本章的课程,我们深入了解了PHP的生命周期,常量、全局变量和超级全局变量的定义和使用。在下一章中,你会学会如何声明和使用的php.ini值。
有关面向对象的资料实在是太多了,我也是才学而已,没有办法给出非常系统、完整的阐述,但以后我会陆陆续续的在博客里写出来的。此外,强烈建议大家看看php官方的这篇wiki。 internals:engine:objects
这一章是我自己写的,如果有什么错误,还请大家指正。这章主要介绍了类与接口的定义,在下一章将看一下如何对类进行操作,比如调用方法、修改属性等。
通过这一章介绍的技术,我们已经可以使用PHP中{资源}了,这将使我们更容易的在扩展中使用一些第三方库,比如使用zip扩展时,我们需要把它的一些特殊的量封装成资源供脚本使用。这无疑极大的增强了PHP的威力!{资源}V5! 下一章将会说一下PHP中的对象!原书中分别讲述了PHP4与PHP5的实现,这里我没有参照原书的安排,按照自己的理解完全重写了这一部分,以PHP5为基础讲述,确切的说,是以PHP5.
我们用了很长的篇幅在这一章描述内核中的HashTable结构以及PHP中的数组实现。在接下来的时间中,我们会在它的基础上学习一下内核是怎样实现与管理PHP语言中的资源与类的。
现在我们已经可以编写一个更真实的函数了,既可以接收用户传递过来的参数,也可以返回数据给调用者。为了写出高质量的代码,还需要我们多花点心思在zval的写时复制等特殊机制上,否则便会在接收参数和返回数据时留下一些bug。 下面的章节里,让我们去看一下PHP语言里强大的数组类型是如何在内核中实现的,去探究内核中的HashTable结构,从而能编写出更强大的PHP扩展。
在这一章里,我们集中讨论了如何把函数执行的结果返回给调用者,通过return语句、引用返回、通过参数返回等等,而且还初步了解了一下zend_arg_info。在下面的章节中,我们将去看一下内核是如何接收调用者传递的参数的。
在这一章里,我们学会了如何创建一个PHP框架并为其添加函数,并编译到PHP中供用户在PHP语言中调用。在接下来的章节里,我们将陆续看到许多高级的PHP内核特性,从而使我们编写出更好的PHP扩展。 编译PHP源码的环境会随着平台与时间的不同而变化,如果本章讲述的知识无法使你顺利的编译PHP,那你可以给我发信,或者去php.net寻找答案,当然最简单的方法是Google,切记的是,万一Google抽风
单就开发一个最基本的php扩展来说,该掌握的前置知识我们已经都掌握了。在接下来的章节里我们将会深入的研究如何制作一个PHP扩展,以及制作一个优秀的PHP扩展所需的其它知识。 此外,如果你只想把PHP当作一个嵌入式应用来使用,我们也强烈的建议你不要直接跳到最后几章,因为在接下来的章节里我们将详细的介绍与PHP内核密切相关的一些内容,比如HashTable、数组、对象......等等的实现方式与应用方