引数のエラー処理 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();
のようなメソッドの連続が出来れば、もっとすっきりするが、まあ許容範囲なのではと思う。
#すでに常識的な方法なのかも知れない気もする。