PHP可以返回ID为#0的资源吗?

aw *_*rud 6 php resources

我想知道有效的PHP资源是否有可能ID为0.我正在获取数据库连接资源,到目前为止它们都是非零正整数.只是好奇资源的潜在ID范围.

Dor*_*Dor 4

资源 id 可以在int. 通过终端在PHP源代码目录中搜索“resource”或“ZEND_FETCH_RESOURCE”。然后你会看到这个函数:(
文件./Zend/zend_list.c,第110行)

ZEND_API void *zend_fetch_resource(zval **passed_id TSRMLS_DC, int default_id,
char *resource_type_name, int *found_resource_type, int num_resource_types, ...)
Run Code Online (Sandbox Code Playgroud)

在函数内部,您将看到这passed_id是资源的 id,其类型为int
通常,库会传递默认 id -1,例如在文件./ext/mysql/php_mysql.c第 1060 行中。

一般来说,您可以假设所有库都会传递一个值大于 0 的真实/存在资源 id,但这并不是每个库都必须遵循的规则 - 可以传递负资源 id 或 0。