可以在不知道获取资源类型的情况下获取zend资源(zend_fetch_resource
)吗?如果是这样,怎么样?
注意:我正在编写PHP扩展。
答案 0 :(得分:2)
是的,你可以。
zend_fetch_resource
将无法正常工作,因为它会收到可接受的资源类型,如果找到的资源不是其中之一,则会失败。
只需使用
void *zend_list_find(int id, int *type);
从资源zval中,您可以使用Z_RESVAL(zval)
提取ID。参数type
将填充所找到资源的类型。
但是,除了创建var_dump
克隆之外,我没有看到太多用法。问题是,一旦你检索到任意资源,你打算用它做什么?...一般来说,你对返回的数据结构一无所知。
您可以直接使用以下命令获取资源名称:
char *zend_rsrc_list_get_rsrc_type(int resource TSRMLS_DC);