回答編集履歴
2
追記
answer
CHANGED
@@ -73,4 +73,5 @@
|
|
73
73
|
}
|
74
74
|
```
|
75
75
|
|
76
|
-
|
76
|
+
もっとも、PHP でオブジェクトの寿命をプログラムから制御するのは下記のような理由でかなり困難なので、普通はこんなことまでは考えません。
|
77
|
+
[オブジェクトが例外の呼び出し履歴に参照されてデストラクタが呼ばれない - ngの日記](http://ngyuki.hatenablog.com/entry/20121021/p1)
|
1
追記
answer
CHANGED
@@ -51,4 +51,26 @@
|
|
51
51
|
}
|
52
52
|
var_dump($a[2]); // 4
|
53
53
|
}
|
54
|
-
```
|
54
|
+
```
|
55
|
+
|
56
|
+
---
|
57
|
+
|
58
|
+
また、オブジェクトやリソースの場合、unset でデストラクタやリソースの解放が行われたりします。
|
59
|
+
さらに PHP にはブロックスコープがないので、次のような状況で unset した方がいいこともあります。
|
60
|
+
|
61
|
+
```lang-php
|
62
|
+
try {
|
63
|
+
// 例えば Hoge がファイルのロックをつかむ場合
|
64
|
+
$obj = new Hoge(__DIR__ . '/hoge.lock');
|
65
|
+
|
66
|
+
// いろいろ
|
67
|
+
|
68
|
+
} catch (Exception $ex) {
|
69
|
+
// ここで Hoge がファイルをロックしたままだとまずい場合は unset が必要
|
70
|
+
unset($obj);
|
71
|
+
|
72
|
+
// いろいろ
|
73
|
+
}
|
74
|
+
```
|
75
|
+
|
76
|
+
(これもかなり限定的ですが)
|