在php new一个对象,这个对象有没有唯一的资源标识?

$obj = new class();
这个$obj有没有什么唯一资源标识,如何获取?

阅读 4.8k
3 个回答

spl_object_hash 函数。

不过一般,2个不同object 算出来的值,非常非常非常非常难分辨,肉眼很看不出来差别。
所以

echo md5(spl_object_hash($obj));

$obj = new class();

这个$obj就是唯一标识,从代码来看new出来的class赋值给$obj,$obj就获取到了。嗯,就是这个样子。



莫名其妙的看到了我的答案被踩了两次,有点奇怪;

spl_object_hash($object);

返回的是一个对象的唯一码,是一个唯一ID,并不是什么资源标识符,搞不清楚你们是作何理解的。一般new一个对象赋值给一个变量来使用,如果说唯一的资源标识,那肯定是这个变量了(变量指的就是这个对象),单纯的对象标识是没什么用的,需要做其他处理,而从资源方面来说,是可以直接使用的。

$file = fopen($file_path);

这个$file就是一个资源,可以通过这个资源进行read,write操作

var_dump 一下,就可以看到对象有一个 #? 后面有一个序号,就是对象 new 出来的顺序了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题