在 Python 和 Ruby 等 OO 语言中常用的一个习惯用法是实例化一个对象并链接返回对对象本身的引用的方法,例如:
s = User.new.login.get_db_data.get_session_data
在 PHP 中,可以像这样复制这种行为:
$u = new User();
$s = $u->login()->get_db_data()->get_session_data();
尝试以下结果syntax error, unexpected T_OBJECT_OPERATOR
:
$s = new User()->login()->get_db_data()->get_session_data();
似乎这可以使用静态方法来完成,这可能是我最终要做的,但我想检查一下lazyweb:实际上是否有一种干净、简单的方法来“内联”实例化 PHP 类(如上面的片段)为此目的?
如果我决定使用静态方法,让类的静态方法返回类本身的实例化是否太神奇了?(有效地编写我自己的构造函数——那不是构造函数?)感觉有点脏,但如果没有太多可怕的副作用,我可能会这样做。
我想我也可以使用 get_user() 方法预先实例化一个 UserFactory,但我很好奇我上面所问的解决方案。