new Hoge()->get();
これはエラー。なんでといわれても困る。そういうものらしい。不便だ。
それがいやなら、しかたないから、staticメソッドでgetInstance()とかfactory()とかを必ず作っておくとか。
Hoge::getInstance()->get();
PHP5以降。つーかこれならいいのにnewはダメというのが納得いかないけど。
ちなみにnew系だと、関数の参照返しのときも
function &getHoge() {
return new hoge();
}
これがNoticeになったりする。とにかくnewするときは一度変数に入れないとダメらしい。
あと、
$hoge$_lb'piyo'$_rb->get();
これはもちろんOK。でも
$hoge->getArray()$_lb'piyo'$_rb;
これはエラー。
ところがPHP5ならメソッドチェインできるから、
$hoge->getObject()->piyo;
これなら問題ナシなのである。
なんか納得いかないけど、このさい配列も無名オブジェクトにキャストして返すか?
return (object)array('piyo' => 'value');
とたんに怪しいコードに。
しかしじっさい、HTMLにPHPを埋めこむときは<?=$hoge?>形式で一行で書けなきゃ汚くなるから、実用的なテクニックになってしまいかねないのがなんとも。