Можно ли получить ресурсы Zend (zend_fetch_resource
), не зная типа загружаемого ресурса? Если да, то как?
Примечание. Я пишу расширение PHP.
Можно ли получить ресурсы Zend (zend_fetch_resource
), не зная типа загружаемого ресурса? Если да, то как?
Примечание. Я пишу расширение PHP.
Да, ты можешь.
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);