Ресурсы это особый вид данных в PHP. Термин resources\ресурсы означает не к какой-то определённый вид данных, а абстрактный метод обслуживания любого вида информации. Ресурсы хранятся в особом списке ресурсов внутри Zend. Каждое вхождение этого списка имеет соответствующее определение, которое указывает вид ресурса, на который оно ссылается. Zend внутренне обслуживает все ссылки на этот ресурс. Прямой доступ к ресурсу невозможен - это делается только через предоставляемый API. Когда все ссылки на специфический ресурс потеряны, вызывается соответствующая shutdown-функция.
Например, ресурсы используются для хранения ссылок БД и дескрипторов файлов. Стандартная реализация de facto находится в модуле MySQL, но другие модули, такие как Oracle, также используют ресурсы.
Примечание: фактически ресурсом может быть указатель на что-либо, что вам необходимо обработать в функции (например, указатель на структуру), и пользователь должен лишь передать единственную переменную ресурса в вашу функцию.
Чтобы создать новый ресурс, вам необходимо зарегистрировать обработчик уничтожения ресурса. Поскольку вы можете хранить как ресурс любой вид данных, Zend должна знать, как освободить этот ресурс, когда он больше не нужен. Это делается путём регистрации в Zend вашего собственного обработчика уничтожения ресурса/destruction, который, в свою очередь, вызывается Zend-машиной, когда ваш ресурс должен быть освобождён (вручную или автоматически). Регистрация вашего обработчика ресурса в Zend возвращает вам resource type handle\дескриптор типа (этого) ресурса. Этот дескриптор нужен в дальнейшем для обеспечения вашего доступа к ресурсу этого типа и хранится в большинстве случаев в глобальной статической переменной в вашем расширении. Нет необходимости беспокоиться здесь о безопасности потока, поскольку вы регистрируете ваш обработчик ресурса только один раз при инициализации модуля.
Zend-функция для регистрации вашего обработчика ресурса определяется так: