Идиома, обычно используемая в ОО-языках, таких как Python и Ruby, - создание экземпляра объекта и создание цепочек методов, которые возвращают ссылку на сам объект, например:
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 "inline "(как показано в приведенном фрагменте) для этой цели?
Если я решу использовать статические методы, не слишком ли волшебно, чтобы статический метод класса возвращал экземпляр самого класса ? (Эффективно писать свой собственный конструктор, который не является конструктором?) Это кажется грязным, но если не так уж много страшных побочных эффектов, я мог бы просто сделать это.
Полагаю, я мог бы также создать экземпляр UserFactory с помощью метода get_user (), но мне любопытно найти решения для того, что я спрашивал выше.