Поддерживает ли PHP шаблон RAII? Как?

Большинство ресурсов PHP никогда не касаются управления памятью, потому что сам язык довольно хорошо справляется с этим за вас. Однако в PHP часто приходится иметь дело с внешними ресурсами, которые не являются памятью - дескрипторами базы данных, сеансами, транзакциями базы данных и т. Д. Этими внешними ресурсами можно наиболее чисто управлять с помощью некоторой формы объекта RAII

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

Однако Google, похоже, указывает, что PHP поддерживает шаблон RAII , хотя я не могу найти подтверждения этого в документации PHP. Поддерживает ли язык это и помещает ли логику очистки в __ destruct , достаточную для выполнения задач RAII?

11
задан Billy ONeal 5 October 2011 в 01:37
поделиться