Да, вы можете.
zend_fetch_resource
не будет работать, потому что он принимает типы ресурсов, которые являются приемлемыми, и дает сбой, если найденный не является одним из них.
Просто используйте
void *zend_list_find(int id, int *type);
Из ресурса zval вы можете извлечь идентификатор с помощью Z_RESVAL(zval)
.Аргумент type
будет заполнен типом найденного ресурса.
Однако я не вижу большого использования для этого, за исключением, возможно, создания клона var_dump
.Проблема в том, что как только вы получите произвольный ресурс, что вы собираетесь с ним делать? ... В общем, вы ничего не знаете о возвращаемой структуре данных.
Вы можете получить имя ресурса напрямуюс:
char *zend_rsrc_list_get_rsrc_type(int resource TSRMLS_DC);