引数のエラー処理 3

引数のエラー処理をしないといっても、たとえば、

function doSome($element) {
    return $this->_elements[$element]->doSome();
}

なんてコードの場合、未定義のelement名を渡すと、非オブジェクトに対しメソッドコールしているので、止まってしまう。これが、多少気持ち悪い。止まるのは駄目だろうと。
しかし、いちいち

function doSome($element) {
    if (isset($this->_elements[$element])) {
        return $this->_elements[$element]->doSome();
    } else {
        return $this->raiseError("Undefined element");
    }
}

なんてするのは、コードは読みにくくなるは、メソッドの数が増えたら同じようなコードを書く必要はあるはと、いいことがない。
そこで、以下の様にすれば良いのではないかと考えた。

function doSome($element) {
    $obj =& $this->_elements($element);
    return $obj->doSome();
}

function &_elements($element) {
    if (isset($this->_elements[$element])) {
        return $this->_elements[$element];
    } else {
        $this->raiseError("Undefined element");
        return $this->_null_element;
    }
}

ヌルオブジェクトパターンの一種になるのだろうか。一応止まることもないし、エラーが投げられるのでデバックにも役たつのではと思う。
PHPで、

$this->_elements($element)->doSome();

のようなメソッドの連続が出来れば、もっとすっきりするが、まあ許容範囲なのではと思う。

#すでに常識的な方法なのかも知れない気もする。