【发布时间】:2011-06-23 17:54:31
【问题描述】:
PHP 上的大多数资源从不涉及内存管理,因为该语言本身非常擅长为您做这件事。但是,在 PHP 中,您通常会处理非内存的外部资源——数据库句柄、会话、数据库事务等。这些外部资源可以使用某种形式的 RAII 对象进行最干净的管理。
我最初认为 PHP 使用了类似于 JVM 或 CLR 的垃圾回收方案,其中不存在析构函数的概念。 (记住:Everyone thinks about garbage collection the wrong way——终结器不是析构函数!)有一个特殊的__destruct 方法,但我认为这是一个类似于Java 或C# 终结器的“终结器”。出于这个原因,您不能在 JVM 或 CLR 上使用 RAII(C# 的 using 块可以让您完成大约 95% 的工作,但这有点不同......)。
但是,Google seems to indicate that PHP supports the RAII pattern,尽管我在 PHP 文档中找不到对此的验证。语言是否支持这一点并且将清理逻辑放入__destruct 足以完成 RAII 任务?
【问题讨论】: