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

标签 php c php-extension php-internals

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

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

最佳答案

是的,你可以。

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

就用

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

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

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

您可以直接获取资源的名称:

char *zend_rsrc_list_get_rsrc_type(int resource TSRMLS_DC);

关于php - 在不知道资源类型的情况下获取 zend 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3385842/

相关文章:

php - 为 MAMP 编译 php 扩展

葡萄牙语 (PT-Br) 的 PHP + MySQL 编码问题

PHP - array_diff 一个多维数组和一个平面数组

php - 我的 comment_func_bar 功能不起作用

C/Linux - 在重定向 stdin 和 stout 时遇到问题

c - 替换密码 - 修改字符串的问题

php - php资源是通过引用传递的吗?

c - 检查有效 Unix FTP 命令的程序(不工作)

php - 使用已弃用的 homebrew/php 在 OSX 上安装 PHP 5.6 的 PHP 扩展

php - 在 OS X 中为捆绑的 PHP 安装扩展