CreatorFunction パターン

 プログラミング言語 PHP では、new でオブジェクトを生成しても、その結果には直接 -> 演算子を適用できません。
 いきなりオブジェクトのメソッドを呼び出したりはできないんですね。

new Foo($param)->getBar(); //これはダメ

 関数呼び出しの連鎖*1ができないので、場合によっては、ちょっと不便です。
 
 ただし、関数呼び出し結果になら -> 演算子でアクセスできるんですね。

Foo($param)->getBar(); //これなら大丈夫

 
 なので、new したオブジェクトを返す関数を作っておくと便利です。
 コンストラクタと同じ引数を受け付ける関数で、生成したオブジェクトを返すようにするわけです。

function Foo($param) {//この関数を作っておくと便利。
  return new FooObject($param);
}
 
class FooObject {
  public function __construct($param1, $param2) {
    //...
  }
  public function getBar() {
    //...
  }
}

 このやりかたを、CreatorFunction パターンと呼ぶことにします。勝手に。

*1:関数呼び出しの連鎖は、たとえば「クリーンコード」では非推奨の書き方とされています。とはいえ、無条件に使うな、というわけではないだろう、使いどころはあるよ、と思います。いわゆる「流れるようなインタフェース(fluent interface)」ですね。

Clean Code アジャイルソフトウェア達人の技

Clean Code アジャイルソフトウェア達人の技