質問です。

class ABC{
function getEFG{return new EFG;}
}
class EFG{
function getClassName{return "EFG";}
}

というクラスを作った場合、

$abc = new ABC;
print($abc->getEFG()->getClassName());

とするとつなげて書くとエラーが出てしまいます。このような記述は出来ないのでしょうか・・・?

$efg = $abc->getEFG();
print($efg->getClassName());

のようにいったん変数に代入してからするとエラーはありません。