PHP4 シングルトンの罠
シングルトンでクラスをインスタンス化するときにリファレンスで受け取るとしくじる。
これが何でなのか分からなかった。
PHP4 は =& で受け取らないとインスタンスのコピーを受け取っちゃうから、激しく不満なんですが。
バグですか?
http://jp2.php.net/manual/ja/language.references.whatdo.php
PHP マニュアルに書いてありました
http://jp2.php.net/manual/ja/language.variables.scope.php
類似の動作がstatic命令にも適用されます。 リファレンスは静的に保存することができません。
野暮ったいのお。
というかそれなら無理にstatic スコープ外すとか変なことせずに、エラー出すとかすべ。
ちょっと待て
static がリファレンスを保存できないなら、PHP5 では上記のスクリプトはいずれもうまくいかないはずだ。
だが試したところPHP4 と同じ結果になった。矛盾してんべな。
つまりstatic はリファレンスを代入できないのではなく、=& で代入するとスコープをstatic ではなくローカルに切り替えるって処理かと思われ。