__getStaticメソッド
「パッチは作成されているけどリポジトリにはcommitされてない状態」みたいですが、__getStatic/__setStatic/__issetStatic/__unsetStaticの各メソッドが追加されるかも知れません。まあ、PHP6からかも知れませんが。
で、以前やったtypesafeな定数って、__getStaticならもっと良い感じになりそうです。以下動作しませんが、「こんな感じで」というコードです。
<?php class Card { private $name; private function __construct($name) { $this->name = $name; } public static function __getStatic($name) { static $objects = null; if (is_null($objects)) { echo "create\n"; $objects = array(); $objects['CLUBS'] = new Card('clubs'); $objects['DIAMONDS'] = new Card('diamonds'); $objects['HEARTS'] = new Card('hearts'); $objects['SPADES'] = new Card('spades'); } if (isset($objects[$name])) { return $objects[$name]; } throw new RuntimeException('value not exist'); } public function __toString() { return $this->name; } } // 'clubs'と表示される var_dump(Card::CLUBS);