php.internals がいい感じに(?)フレーミングしている横で進んでいる読み込み専用プロパティに関するスレッドは要注目。
個人的にはこの案 (readonly, writeonly, readwrite (or regular) 修飾子を追加) が良さそうに思います。
現状でも (PHP 5.1 限定で) 下記のようなコードで実現できますが、宣言だけで済むようになると非常に楽なので、5.2 で採用されると嬉しいです。
class Hoge { private $_foo = 0; private $_bar = 1; public function __get($name) { $prop = '_' . $name; if (property_exists($this, $prop)) { return $this->$prop; } $errmsg = sprintf('Undefined property: %s::%s', __CLASS__, $name); trigger_error($errmsg, E_USER_NOTICE); return NULL; } public function __isset($name) { $prop = '_' . $name; return property_exists($this, $prop); } }
PHP6 でもいいから入ってくれると goto (正確には "jump label") で汚されたのも我慢できようというものなんですが。
つーか、PHP は元々 "break level" でネストされたループを抜けられるんだから、labelled break もどきなんて要らないのに...