Re: Access property of object stored in a constant
| From: | Juliette Reinders Folmer | Date: | Sat, 19 Aug 2023 00:18:37 +0000 |
| Subject: | Re: Access property of object stored in a constant | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-120918@lists.php.net to get a copy of this message | ||
On 18-8-2023 17:27, Ilija Tovilo wrote:
Hi everyone Since https://wiki.php.net/rfc/new_in_initializers we can store objects in global constants. However, we may not actually read or write to the properties of those objects without first fetching the constant into a local variable. const a = new stdClass; a->b = 42; // Fatal error: Cannot use temporary expression in write context $a = a; $a->b = 42; // Works fine This issue was reported twice, so it seems like this code is generally expected to work. https://github.com/php/php-src/issues/10497 https://github.com/php/php-src/issues/11781 I have created a patch here to add support for this syntax: https://github.com/php/php-src/pull/11788 Since this is a language change I would like to ask for feedback before merging. As always, if there are concerns I will create a small RFC instead. I will also only merge this for 8.4, as feature freeze for 8.3 has long passed. IlijaI totally understand that people are trying to do this, but this still very much feels like scope creep. IIRC the new in initializers feature was _intended_ only for enums (which can't take properties). Now suddenly a "constant" would no longer be constant... In which case, what's the point of declaring it as a constant ? Smile, Juliette