回答編集履歴

2

追記

2015/07/07 04:19

投稿

ngyuki
ngyuki

スコア4514

test CHANGED
@@ -148,6 +148,8 @@
148
148
 
149
149
 
150
150
 
151
- (これもかなり限定的すが)
151
+ っとも、PHP でオブジェクトの寿命をプログラムら制御するのは下記のよう理由でかな困難なの、普通はこんなことまでは考えません。
152
+
153
+ [オブジェクトが例外の呼び出し履歴に参照されてデストラクタが呼ばれない - ngの日記](http://ngyuki.hatenablog.com/entry/20121021/p1)
152
154
 
153
155
 

1

追記

2015/07/07 04:19

投稿

ngyuki
ngyuki

スコア4514

test CHANGED
@@ -105,3 +105,49 @@
105
105
  }
106
106
 
107
107
  ```
108
+
109
+
110
+
111
+ ---
112
+
113
+
114
+
115
+ また、オブジェクトやリソースの場合、unset でデストラクタやリソースの解放が行われたりします。
116
+
117
+ さらに PHP にはブロックスコープがないので、次のような状況で unset した方がいいこともあります。
118
+
119
+
120
+
121
+ ```lang-php
122
+
123
+ try {
124
+
125
+ // 例えば Hoge がファイルのロックをつかむ場合
126
+
127
+ $obj = new Hoge(__DIR__ . '/hoge.lock');
128
+
129
+
130
+
131
+ // いろいろ
132
+
133
+
134
+
135
+ } catch (Exception $ex) {
136
+
137
+ // ここで Hoge がファイルをロックしたままだとまずい場合は unset が必要
138
+
139
+ unset($obj);
140
+
141
+
142
+
143
+ // いろいろ
144
+
145
+ }
146
+
147
+ ```
148
+
149
+
150
+
151
+ (これもかなり限定的ですが)
152
+
153
+