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.
>
> Ilija
>
I 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