什么是资源数据类型?

资源数据类型是PHP4引进的。资源是一种特殊的变量类型,保存了到外部资源的一个引用:如打开文件、数据库连接、图形画布区域等。

资源是通过专门的函数来建立和使用的。

资源变量在PHP中的使用$fp = fopen("test.txt", "rw");

var_dump($fp);

fclose($fp);

打印结果:resource(5) of type (stream)

数字5:表示资源ID为5,具体含义后面介绍。

stream:资源类型名称。

资源ID

内核中将注册的资源变量存储在一个HashTable中,并把资源所在HashTable中的key作为资源ID。

所以,实际上PHP中的资源变量实际存储的是一个整型,通过这个ID找到HashTable中对应的资源。#define Z_RESVAL(zval) (zval).value.lval

#define Z_RESVAL_P(zval) Z_RESVAL(*zval)

#define Z_RESVAL_PP(zval) Z_RESVAL(**zval)

上面的宏,是内核中ZE为资源变量赋值的API,看出确实是对整型变量的赋值。

资源类型名称

为了区分资源类型,需要为我们定义的资源定义类型名称。#define MY_RES_NAME "my_resource" //资源类型名称,PHP通过var_dump打印资源变量时会看到这个名称

static int my_resource_descriptor;

ZEND_MINIT_FUNCTION(jinyong)<

php什么叫资源型,php:资源(resource)数据类型实例详解相关推荐

  1. php 字符串表示,php:字符串(string)数据类型实例详解

    什么是字符串(string)? 字符串就是连续的字符序列,由数字,字母和符号组成.在字符串的每个字符只占用一个字节. 在PHP中,有三种定义字符串的方式,分别是单引号('),双引号(")和定 ...

  2. php怎么定义浮点型,php:浮点型(float)数据类型实例详解

    什么是浮点(float)数据类型? 浮点数据类型就是我们常见的小数,想"0.7","100.2"这些都是浮点型数据,浮点数据类型既可以用来存储整数,也可以存储小 ...

  3. 【Redis】数据类型的详解与使用场景【原创】

    文章目录 Redis数据类型的详解与使用场景 1-1 NoSQL的概述 1. 概述 2. 为什么需要NoSQL 3. NoSQL产品 4. 分类 5. 特点 2-1 Redis的概述 1. 概述 2. ...

  4. MySQL操作之JSON数据类型操作详解

    MySQL操作之JSON数据类型操作详解 这篇文章主要介绍了MySQL操作之JSON数据类型操作详解,内容较为详细,具有收藏价值,需要的朋友可以参考. 概述 mysql自5.7.8版本开始,就支持了j ...

  5. pythontuple数据类型_Python数据类型之Tuple元组实例详解

    本文实例讲述了Python数据类型之Tuple元组.分享给大家供大家参考,具体如下: tuple元组 1.概述 本质上是一种有序的集合,和列表非常的相似,列表使用[]表示,元组使用()表示. 特点:一 ...

  6. Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一)

    Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) 本文目录: 一.[旋转的精灵女孩]案例运行效果 二.Three.js简介 三.Three.js代码正常运行显示条件 (1)不载入 ...

  7. Redis五种基本数据类型底层详解(原理篇)

    Redis五种基本数据类型底层详解 详细介绍Redis用到的数据结构 简单动态字符串 SDS和C字符串的区别 总结 链表 字典 哈希表 字典 哈希算法 解决键冲突 rehash(重点) 渐进式reha ...

  8. Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(三)

    Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(三) 本篇目录: 六.完整构建整个[旋转的精灵女孩]实例 (1).新建.启动webGL工程空间 (2).构建项目的目录层次结构 (2. ...

  9. Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(二)

    Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(二) 本篇目录: 五.实例中所使用的代码语法详细解释 (1).构建一个三维空间场景 (2).选择一个透视投影相机作为观察点 (a).创 ...

最新文章

  1. 基于Matlab的神经网络结合遗传算法在非线性函数极值寻优中的应用
  2. java中this关键词
  3. 近期发现的一些-20190519
  4. “腾讯看点”打响信息流的全面战争
  5. java 验证码透明背景_Java中的证书透明度验证
  6. Gradle中的buildScript,gradle wrapper,dependencies等一些基础知识
  7. KVM精简教程(七):常用虚拟机管理
  8. python | 关键词快速匹配检索小工具 pyahocorasick / ahocorapy
  9. Tensorflow-gpu 2.4.1与CUDA11.1,cuDNN8.1配置问题
  10. 如何写出整洁规范的R代码?是时候讨论一下代码规范性了
  11. python 如何显示时钟_python控制台显示时钟的示例
  12. IDC:第三季度企业WLAN市场增长强劲
  13. hql 占位符_hibernate中如何使用占位符拼接HQL
  14. 安装  ansible tower  报错:
  15. c# aes解密 java,C#实现的AES加密解密完整实例
  16. java到达时间后自动执行代码_java设置按时间自动执行
  17. 通过关键字查询地理坐标(天地图)
  18. 重磅 | 智能工厂整体实施方案(附PPT下载)
  19. 快应用如何接入微信支付
  20. mac 查看本地php 版本,Mac系统版本怎么看

热门文章

  1. Delphi调用LibVLC播放视频,窗口如何响应键盘鼠标的消息?OnClick、OnDblClick、OnMouseMove
  2. php下一代的五个framework介绍
  3. 「雕爷学编程」Arduino动手做(27)——BMP280气压传感器
  4. Android 开发:Paint画笔的基本使用方法
  5. Yelp reviews - Polarity-数据集
  6. 计算机进到系统闪屏没有桌面,电脑闪屏,教您电脑显示器屏幕出现闪屏怎么处理...
  7. 装装糊涂,世事皆通达
  8. [喵咪大数据]Hadoop单机模式
  9. 戴尔DELL E6530 minipcie接口扩展nvme盘,express接口装nvme盘
  10. vscode——HTML网页的内容添加和部分标签的使用