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