Выборка Zend ресурса, не зная тип ресурса - PullRequest
2 голосов
/ 02 августа 2010

Можно получить ресурсы Zend (zend_fetch_resource), не зная тип ресурса выборки? Если да, то как?

Примечание. Я пишу расширение PHP.

1 Ответ

2 голосов
/ 02 августа 2010

Да, вы можете.

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);
...