PHPの連想配列のキーにオブジェクトを渡すとエラー(というより警告かなぁ)になって格納できない。その弱点をカバーするためにこんなコードを書いてみた。
<?php class Hashtable { private $array = array(); public function put($object, $value) { $key = $object->tableKey(); $this->array[$key] = $value; } public function get($object) { $key = $object->tableKey(); return $this->array[$key]; } } ?>
ここでキーとして登録するオブジェクトは文字列を返すtableKeyメソッドを実装しなければならない。
__toStringを利用する手が先に思いついたけど、ハッシュテーブルのキーとオブジェクトの文字列表現というのはあんまり同一の文字列にするのも気持ち悪そうだと思ったもので。
こんな特別なクラスを作らなくても、標準の連想配列ですます方法はないかなぁ…それともフレームワークってあんまりさわったことないけど、こういったデータ構造に関するライブラリとか付いていたりして…それってPEARを探した方が見つかりそうかな…