2

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

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

4

1 回答 1

2

是的你可以。

zend_fetch_resource将不起作用,因为它接收可接受的资源类型,如果找到的资源不是其中之一,则会失败。

只需使用

void *zend_list_find(int id, int *type);

您可以从资源 zval 中提取 id Z_RESVAL(zval)。参数type将填充找到的资源的类型。

但是,我没有看到太多的用途,除了可能创建一个var_dump克隆。问题是,一旦您检索到任意资源,您将如何处理它?...通常,您对返回的数据结构一无所知。

您可以通过以下方式直接获取资源的名称:

char *zend_rsrc_list_get_rsrc_type(int resource TSRMLS_DC);
于 2010-08-02T07:54:24.990 回答