Появится ли в PHP 8.4 инстанцирование класса без лишних скобок

Источник: «Is class instantiation without extra parenthesis coming to PHP 8.4?»
Сможем ли отказаться от скобок вокруг ключевого слова new при инстанцировании класса? Узнайте последние новости о статусе этого интересного RFC-предложения PHP 8.4.

RFC для исключения круглых скобок вокруг выражения new, вероятно, появится в PHP 8.4. В настоящее время RFC находится на стадии голосования, 24 голос за и 3 голоса против. Голосование заканчивается 24 мая, так что ещё есть шанс, что 2/3 голосов будут набраны, но оптимистично выглядит то, что всё движется в правильном направлении.

Поскольку доступ к членам класса при инстанцировании был представлен, необходимо обернуть вызов new MyClass() круглыми скобками, иначе вы получите ошибку парсинга. Предлагаемый синтаксис позволит обращаться к константам, свойствам и методам без лишних круглых скобок:

class Request implements Psr\Http\Message\RequestInterface
{
// ...
}

// Valid
$request = (new Request())->withMethod('GET')->withUri('/hello-world');

// PHP Parse error: syntax error, unexpected token "->"
$request = new Request()->withMethod('GET')->withUri('/hello-world');

Вот несколько общих примеров, которые, вероятно, будут использовать с этой функцией (в RFC есть и другие примеры):

var_dump(
new MyClass()::CONSTANT, // string(8) "constant"
new MyClass()::$staticProperty, // string(14) "staticProperty"
new MyClass()::staticMethod(), // string(12) "staticMethod"
new MyClass()->property, // string(8) "property"
new MyClass()->method(), // string(6) "method"
new MyClass()(), // string(8) "__invoke"
);

Все подробности об этом предлагаемом изменении можно прочитать в RFC. Скорее всего, эта функция появится в PHP 8.4. Реализация выглядит завершённой (ещё не одобрена и не объединена) и может быть найдена на GitHub.

Дополнительные материалы

Предыдущая Статья

Как исправить ошибку mysql_native_password is not loaded в MySQL 8.4

Следующая Статья

Как прослушивать несколько событий в веб-компоненте