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