[RFC] [Discussion] new MyClass()->method() without parentheses
| From: | Valentin Udaltsov | Date: | Mon, 08 Apr 2024 06:08:11 +0000 |
| Subject: | [RFC] [Discussion] new MyClass()->method() without parentheses | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-123031@lists.php.net to get a copy of this message | ||
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:
- https://externals.io/message/66197
- https://bugs.php.net/bug.php?id=70549
- https://externals.io/message/101811
- https://externals.io/message/113953
Here's what you will be able to write after this change:
```php
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