マジックメソッドでデフォルト値を持つ辞書を作ってみる

Pythonではデフォルト値を持つことが出来る連想配列が標準で組み込んであると聞いたのでphpで似たようなものを作ってみた。

ソース

<?php

class Dictionary
{
    protected $hash;
    protected $default;
    public function __get( $name)
    {
        if( !isset( $this->hash[$name])) $this->hash[$name] = $this->default;
        
        return $this->hash[$name];
    }
    public function __set( $name, $value)
    {
        $this->hash[$name] = $value;
    }
    public function __construct( $default = '')
    {
        $this->default = $default;
    }
}

// コンストラクタでデフォルトの値を設定
$d = new Dictionary( 'hogehoge');

echo $d->somekey . PHP_EOL;
$d->somekey = 'some value';
echo $d->somekey . PHP_EOL . PHP_EOL;

//添え字を任意の文字列にしたいとき
echo $d->{'somekey2'} . PHP_EOL;

上記のコードの実行結果

hogehoge
some value

hogehoge