PHPのほとんどのリソースは、言語自体がこれを行うのに非常に優れているため、メモリ管理に触れることはありません。ただし、PHPでは、メモリではない外部リソース(データベースハンドル、セッション、データベーストランザクションなど)を処理することがよくあります。これらの外部リソースは、何らかの形式のRAIIオブジェクトを使用して最もクリーンに管理できます。
PHPは、デストラクタの概念が存在しないJVMやCLRと同様のガベージコレクションスキームを使用していると当初は思っていました。(覚えておいてください:誰もがガベージコレクションを間違った方法で考えています-ファイナライザーはデストラクタではありません!)特別な__destruct
方法がありますが、それはJavaやC#ファイナライザーに似た「ファイナライザー」だと思いました。このため、JVMまたはCLRでRAIIを使用することはできません(C#のusing
ブロックはそこまでの道のりの約95%を取得しますが、それは少し異なります...)。
ただし、GoogleはPHPがRAIIパターンをサポートしていることを示しているようですが、PHPドキュメントでこれの検証を見つけることはできません。言語はこれをサポートしており、__destruct
RAIIタスクを実行するのに十分なクリーンアップロジックを配置していますか?