php - “句柄”到底是什么意思啊
黄舟
黄舟 2017-04-11 09:08:44
[PHP讨论组]

“句柄”是用来操作某个“对象/资源,即:操作某个目标””的,那么“句柄”到底是什么意思啊?释放句柄又怎么解释?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(7)
PHP中文网

对象就比如你对象,句柄就好比你对象的手机号码,你不必时时刻刻关心你对象在哪里干嘛,你只要有需要的时候打ta电话就能找到,连释放的时候都可以一个电话说:我们分手了。

迷茫

句柄英文单词为handle

句柄,就是回调函数。

天蓬老师

句柄(handle)在语义上可以理解为把手。用这个把手,可以得到资源。拉着把手就等于拿着资源,针对把手操作就等于顺藤摸瓜操作了资源。例如:

// 建立资源
$ch = curl_init();
// 根据句柄操作资源
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
// 根据句柄执行这个资源
$head = curl_exec($ch); 

英语里还有个词叫love handle指得就是肚子周围的一圈可以捏来捏去的小赘肉,直译可以理解为“爱的把手”

黄舟

类似就是一个通道,一个保持着某种状态的对象。
一些资源因为性质的原因无法被直接操作, 就需要通过句柄去操作。
比如:

  1. 操作数据库需要身份,所以登录数据库以后的句柄带着身份信息去操作数据库

  2. 文件的读写有文件指针位置,读写需要控制指针位置, 句柄提供了一个带状态的通道。

  3. 定时器是一种状态,把定时状态赋值给句柄, 当触发了一些事情以后可以去对句柄做处理(取消定时,提前触发)等。

大家讲道理

你的应用程序往往要对对象(数据文件, 自定义的数据结构等)做一些操作, 而句柄可以简单地理解为是指向这些对象的一个指针. 在你的程序启动之后, 这些对象在内存中并非是一成不变的, 一方面由于处理器调度等原因, 另一方面现在的操作系统大多基于虚拟内存空间, 在这种情况下, 内存管理器会经常来回移动对象, 以此来满足当前运行的需要, 那如果说我们寻找对象的方式仅仅是依靠一个指针 ---- 指向了一个固定的内存地址, 那么显然是没办法应对不断变化的实际内存, 所以, 句柄可以说是一个指向指针的指针, 它本身虽然没有直接指向对象, 但是可以通过它来获知对象在内存上的变动情况, 然后间接地获取对象

也就是说, 实际对象在内存里的地址通常是不固定的, 而固定的句柄则描述了相应对象在内存里的位置

巴扎黑

在C语言里有的是指向结构体的指针

巴扎黑

指向指针的“指针”
链接描述

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号