在不知道资源类型的情况下获取zend资源

时间:2010-08-02 07:35:52

标签: php c php-extension php-internals

可以在不知道获取资源类型的情况下获取zend资源(zend_fetch_resource)吗?如果是这样,怎么样?

注意:我正在编写PHP扩展。

1 个答案:

答案 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);