Как вы могли видеть в названии, мой фон программирования – Java. В Java вы можете делать такие вещи, как это
new Object().callSomeMethod();
без присвоения созданного объекта переменной, очень полезному и понятному кодированию, если вам нужен только этот объект один раз.
Теперь в PHP я пытаюсь сделать то же самое
new Object()->callSomeMethod();
но здесь я получаю «Ошибка анализа: синтаксическая ошибка, неожиданная» -> «(T_OBJECT_OPERATOR)».
Есть ли способ сделать это в PHP?
(new Object())->callSomeMethod();
будет работать в PHP 5.4+
РЕДАКТИРОВАТЬ
Это новая функция, добавленная на PHP 5.4:
Добавлен доступ члена класса к экземпляру, например
(new Foo)->bar()
.
EDIT2
PHP-функция RFC предлагает два набора синтаксиса (с и без скобок), оба из них реализованы в RFC, но только один был отправлен. Я не мог найти ссылки, объясняющие решение.
Давайте рассмотрим примеры синтаксиса без привязки в RFC:
new foo->bar()
следует читать как (new foo)->bar()
new $foo()->bar
следует читать как (new $foo())->bar
new $bar->y()->x
следует читать как (new ($bar->y)())->x
Я думаю, что безрежимный синтаксис не отправляется, потому что его предлагаемый приоритет синтаксического анализа не очень интуитивно понятен (трудно следить за глазами), как показано в третьем примере.