読者です 読者をやめる 読者になる 読者になる

PHPでコンストラクタからメソッドチェーンする方法

PHPでは他の言語のようにコンストラクタからメソッドチェーンできない。例えば"new Hoge->doSomething();"というようなことができない(やってみるとパーサエラーになる)。
オブジェクトを生成して何かひとつメソッドを呼び出して終わり、という例の時に

<?php
$obj = new Hoge;
$obj->doSomething();

とやるのは変数に何か名前をつけるコストやタイプ数などの観点から見てめんどうくさい。


そこで以下のような関数を定義する。

<?php
function ref($obj)
{
    return $obj;
}

この関数はみたとおり渡された値をそのまま返す関数だが、これを使うことで以下のようにメソッドチェーンできるようになる。

<?php
ref(new Hoge)->doSomething();

というバッドノウハウっぽい話。