Большинство ресурсов PHP никогда не касаются управления памятью, потому что сам язык довольно хорошо справляется с этим за вас. Однако в PHP часто приходится иметь дело с внешними ресурсами, которые не являются памятью - дескрипторами базы данных, сеансами, транзакциями базы данных и т. Д. Этими внешними ресурсами можно наиболее чисто управлять с помощью некоторой формы объекта RAII
. что PHP использует схему сборки мусора, аналогичную JVM или CLR, где концепция деструктора не существует. (Помните: Все думают о сборке мусора неправильно - финализаторы не являются деструкторами!) Есть специальный метод __ destruct
, но я подумал, что это «финализатор», похожий на Java или финализатор C #. По этой причине вы не можете использовать RAII в JVM или CLR (C # с использованием блоков
дает вам примерно 95% пути, но это немного другое ...).
Однако Google, похоже, указывает, что PHP поддерживает шаблон RAII , хотя я не могу найти подтверждения этого в документации PHP. Поддерживает ли язык это и помещает ли логику очистки в __ destruct
, достаточную для выполнения задач RAII?