こもろぐ @tenkoma

What We Find Changes Who We Become -- Peter Morville著『アンビエント・ファインダビリティ 』

広告:本ブログで紹介している書籍等商品の紹介でAmazonアソシエイトを利用していることがあります。

連想配列の弱点

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を探した方が見つかりそうかな…