在 5.4 之前的 PHP 版本中,我使用静态类来实例化一个对象并立即调用所需的函数,例如:
$result = Foo::init()->bar();
在上面的示例中,静态函数init()
只是实例化了包含它的类并将其作为对象返回。bar()
这提供了方法链接功能,并允许我在一行代码中立即调用。静态函数init()
看起来像这样:
static public function init() {
$object = new self();
return $object;
}
现在 PHP 5.4 增加了对实例化类成员访问的支持,而不是使用静态类,我现在可以执行以下操作:
$result = (new Foo)->bar();
我的问题:我使用静态类的旧方法是否不好,如果是,为什么?既然 PHP 在实例化时支持类成员访问,那么这是在对象实例化后立即访问类成员的更正确方法吗?