[ PHP 内核与扩展开发系列] PHP 中的资源类型:复合数据类型 —— 资源

截止到现在,我们已经熟悉了 PHP 语言中的字符串、数字、布尔以及数组等数据类型了,接下来,我们将接触另外一种 PHP 独特的数据类型——资源(Resource)。 讲述之前,先描述下资源类型在内核中的结构: typedef struct _zend_rsrc_list_entry { void *ptr; int type; int refcount; } zend_rsrc_list…

[ 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 内核与扩展开发系列] 变量在内核中的实现 —— PHP 变量的创建、存储和检索

创建变量 我们已经知道 PHP 变量在内核中其实是通过 zval 结构来实现的,也初步了解如何设置一个 zval 结构的类型和值。这一节我们将在前两节的基础上,彻底掌握对 zval 结构的操控,期间将引入很多超棒的新宏。 在编码的时候,很希望在内核中创建的 zval 可以让用户在 PHP 语言里以变量的形式使用,为了实现这个功能,我们首先要创建一个 zval。最容易想到的办法便是创建一个…

[ Laravel 5.2 文档 ] 数据库 —— 迁移

1、简介 迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和 Laravel 的结构构建器结对从而可以很容易地构建应用的数据库表结构。 Laravel 的Schema门面提供了与数据库系统无关的创建和操纵表的支持,在 Laravel 所支持的所有数据库系统中提供一致的、优雅的、平滑的API。 2、生成迁移 使用 Artisan 命令make:migrat…

Eloquent ORM 实例教程 —— 模型创建、更新及批量赋值

1、创建模型 1.1 使用save方法创建模型 调用Eloquent模型类的save方法即可创建模型并插入数据到数据库: $post = new Post; $post->title = ‘test 4’; $post->content = ‘test content’; $post->user_id = 1; $post->cat_id = 1; if($pos…

[ Laravel 5.1 文档 ] 服务 —— 文件系统/云存储

1、简介 基于Frank de Jonge的PHP包Flysystem,Laravel提供了强大的文件系统抽象。Laravel文件系统集成提供了使用驱动处理本地文件系统的简单使用,这些驱动包括Amazon S3,以及Rackspace云存储。此外在这些存储选项间切换非常简单,因为对每个系统而言,API是一样的。 2、配置 文件系统配置文件位于config/filesystems.php。…