Re: [PHP-DEV] [RFC] [Discussion] new MyClass()->method() without parentheses

Yes, please!

···

Hello internals,

I would like to propose a syntax change for PHP 8.4 that allows to immediately access instantiated objects without wrapping the expression into parentheses.

This was requested and discussed several times, see:

Here’s what you will be able to write after this change:


class MyClass

{

const CONSTANT = 'constant';

public static $staticProperty = 'staticProperty';

public static function staticMethod(): string { return 'staticMethod'; }

public $property = 'property';

public function method(): string { return 'method'; }

public function __invoke(): string { return '__invoke'; }

}

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"

);

For more details see the RFC: https://wiki.php.net/rfc/new_without_parentheses

Implementation: https://github.com/php/php-src/pull/13029

Best regards, Valentin

Marco Deleu

I haven't verified the implementation, but as long as there really
aren't backwards compatibility issues for correct code, then this
would be a nice quality of life improvement.