[ PHP 内核与扩展开发系列] Array 与 HashTable:在内核中操作数组

当你在扩展中使用 HashTable 时候,大部分情况下是要存储用户端的变量,就像 PHP 语言中数组那样。为此,内核中已经准备好了相应的工具,来让我们更加的方便的操作 HashTable 存储 zval*,也就是 PHP 语言中的数组,即 IS_ARRAY 常量代表的 zval,以下用 {数组} 来代替 PHP 语言中的数组这个词。 创建数组 创建 HashTable 有些繁琐,虽然有…

[ PHP 内核与扩展开发系列] Array 与 HashTable:操作 HashTable 的 API

Zend 把与 HashTable 有关的 API 分成了好几类以便于我们查找,这些 API 的返回值大多都是常量SUCCESS 或者 FAILURE。 初始化 HashTable 下面在介绍函数原型的时候都使用了 ht,但是我们在编写扩展的时候,一定不要使用这个名称,因为一些 PHP 宏展开后会声明这个名称的变量,进而引发命名冲突。 创建并初始化一个 HashTable 非常简单,只要…

[ PHP 内核与扩展开发系列] Array 与 HashTable:数组与链表

我们在评选各种数据结构时,往往会考虑我们需要处理的数据规模以及需要的性能。下面让我们简要的看一看 C 语言中的数组和链表。 数组 作者这里用的不是 Array,而是 Vector,可能指的是 C++ 里的 Vector,它与数组几乎是完全一样的,唯一的不同便是可以实现动态存储。本节下文都是用数组一词代替之,请各位注意。数组是内存中一块连续的区域,其每一个元素都具有一个唯一的下标值。 in…

[ PHP 内核与扩展开发系列] 变量在内核中的实现 —— 变量的值

PHP 内核提供了三个基础宏来方便我们对变量的值进行操作,这几个宏同样以 Z_ 开头,并且 P 结尾和PP 结尾的同上一节中的宏一样,分别代表这参数是指针还是指针的指针。 基本类型 此外,为了进一步方便我们的工作,内核中针对具体的数据类型分别定义了相应的宏。如针对 IS_BOOL 型的 BVAL 组合(Z_BVAL、Z_BVAL_P、Z_BVAL_PP)和针对 IS_DOUBLE 的 D…

[ Laravel 5.4 文档 ] Eloquent ORM —— 序列化

1、简介 当构建 JSON API 时,经常需要转化模型和关联关系为数组或 JSON。Eloquent 提供了便捷方法以便实现这些转换,以及控制哪些属性被包含到序列化中。 2、序列化模型 & 集合 序列化为数组 要转化模型及其加载的关联关系为数组,可以使用 toArray 方法。这个方法是递归的,所以所有属性及其关联对象属性(包括关联的关联)都会被转化为数组: $user = A…

[ Laravel 5.4 文档 ] 综合话题 —— 辅助函数

1、简介 Laravel 自带了一系列 PHP 辅助函数,很多被框架自身使用,如果你觉得方便的话也可以在代码中使用它们。 2、方法列表 数组函数 array_add() array_add 函数添加给定键值对到数组,如果给定键不存在的话: $array = array_add([‘name’ => ‘Desk’], ‘price’, 100); // [‘name’ => ‘…

[ Laravel 5.3 文档 ] 附录 —— 辅助函数

1、简介 Laravel 自带了一系列 PHP 辅助函数,很多被框架自身使用,如果你觉得方便的话也可以在代码中使用它们。 2、方法列表 数组函数 array_add() array_add 函数添加给定键值对到数组,如果给定键不存在的话: $array = array_add([‘name’ => ‘Desk’], ‘price’, 100); // [‘name’ => ‘…

[ Laravel 5.3 文档 ] Eloquent ORM —— 序列化

1、简介 当构建 JSON API 时,经常需要转化模型和关联关系为数组或 JSON。Eloquent 提供了便捷方法以便实现这些转换,以及控制哪些属性被包含到序列化中。 2、序列化模型&集合 序列化为数组 要转化模型及其加载的关联关系为数组,可以使用 toArray 方法。这个方法是递归的,所以所有属性及其关联对象属性(包括关联的关联)都会被转化为数组: $user = App…

[ Laravel 5.3 文档 ] Eloquent ORM —— 访问器&修改器

1、简介 访问器和修改器允许你在获取模型属性或设置其值时格式化 Eloquent 属性。例如,你可能想要使用Laravel加密器对存储在数据库中的数据进行加密,并且在 Eloquent 模型中访问时自动进行解密。 除了自定义访问器和修改器,Eloquent 还可以自动转换日期字段为Carbon实例甚至将文本转换为JSON。 2、访问器 & 修改器 定义访问器 要定义一个访问器,需…

[ Laravel 5.3 文档 ] HTTP层 —— 验证

1、简介 Laravel 提供了多种方法来验证应用输入数据。默认情况下,Laravel 的控制器基类使用ValidatesRequests trait,该trait提供了便利的方法通过各种功能强大的验证规则来验证输入的 HTTP 请求。 2、快速入门 要掌握 Laravel 强大的验证特性,让我们先看一个完整的验证表单并返回错误信息给用户的例子。 定义路由 首先,我们假定在routes/…

123