Recently Publish Pages
[ PHP 内核与扩展开发系列] Array 与 HashTable:操作 HashTable 的 API
Zend 把与 HashTable 有关的 API 分成了好几类以便于我们查找,这些 API 的返回值大多都是常量SUCCESS 或...
[ PHP 内核与扩展开发系列] Array 与 HashTable:数组与链表
我们在评选各种数据结构时,往往会考虑我们需要处理的数据规模以及需要的性能。下面让我们简要的看一看 C 语言中的数组和链表。 数组...
[ PHP 内核与扩展开发系列] 函数的参数:arginfo 与类型绑定
在前面的章节中我们已经介绍过 arginfo 了,下面我们看一下如何通过其实现类型绑定,但这个特性只能在 Zend Engine 2...
[ PHP 内核与扩展开发系列] 函数的参数:zend_parse_paramenters
基本参数 最简单的获取函数调用者传递过来的参数便是使用 zend_parse_parameters() 函数。 zend_pa...
[ PHP 内核与扩展开发系列] 函数返回值:引用参数与函数的执行结果
一个函数的执行结果要返回给调用者,除了使用 return 功能,还有一种办法,那就是以引用的形式传递参数,然后在函数内部修改这个参数...
[ PHP 内核与扩展开发系列] 函数返回值:一个特殊的参数 —— return_value
引入 return_value PHP 语言中函数的返回值是通过 return 来完成的,就像下面的程序: <?php ...
[ PHP 内核与扩展开发系列] 第一个 PHP 扩展:编写函数
前面我们已经生成好了一份扩展框架,但它是没有什么实际作用。一个扩展的作用可大了去了,既可以操作 PHP 中的变量、常量,还可以定义函...
[ PHP 内核与扩展开发系列] 第一个 PHP 扩展:编译扩展
我们已经在上一节准备好了需要编译的源文件,接下来需要的便是把它们编译成目标文件了。 在 *nix 下编译安装 第一步:我们需要...
如果在所有 Laravel 项目中只安装一个扩展包,你会选择哪一个?
Mike Erickson (@codedungeon) 在 Twitter 上提出了这个问题,吸引了很多回复。我个人感觉由 Bar...
[ PHP 内核与扩展开发系列] 第一个 PHP 扩展:扩展的基本结构
每一个 PHP 扩展都至少需要两个文件:一个配置文件和一个源文件。配置文件用来告诉编译器应该编译哪几个文件,以及编译本扩展是否需要的...
[ PHP 内核与扩展开发系列] 配置编译环境并编译安装 PHP
准备工作 从一个 PHP 程序员,到一个想为 PHP 开发扩展的程序员,此间的进化有一步是跳不过去的,那就是你必须熟知如何编译 P...
[ PHP 内核与扩展开发系列] 内存管理 —— 引用计数
对于 PHP 这种需要同时处理多个请求的程序来说,申请和释放内存的时候应该慎之又慎,一不小心便会酿成大错。另一方面,除了要安全申请和...
[ PHP 内核与扩展开发系列] 内存管理 —— 内存分配与释放
在 PHP 里,我们可以定义字符串变量,比如 <?php $str="hello";?>,$str 这个字符串变量可以被...
[ PHP 内核与扩展开发系列] 变量在内核中的实现 —— 类型转化
现在我们已经可以从符号表中获取用户在 PHP 语言里定义的变量了,是时候该做点其它事情了,举个例子,比如给它来个类型转换。想想 C ...
[ PHP 内核与扩展开发系列] 变量在内核中的实现 —— PHP 变量的创建、存储和检索
创建变量 我们已经知道 PHP 变量在内核中其实是通过 zval 结构来实现的,也初步了解如何设置一个 zval 结构的类型和值。...