Re: Analysis of property visibility, immutability, and cloning proposals
| From: | Olle Härstedt | Date: | Tue, 29 Dec 2020 18:38:51 +0000 |
| Subject: | Re: Analysis of property visibility, immutability, and cloning proposals | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-112643@lists.php.net to get a copy of this message | ||
2020-12-29 15:38 GMT, Larry Garfield <larry@garfieldtech.com>:
> On Tue, Dec 29, 2020, at 2:26 AM, Marc wrote:
>>
>> On 28.12.20 21:23, Larry Garfield wrote:
>> > There's been a number of discussions of late around property visibility
>> > and how to make objects more immutable. Since it seems to have been
>> > well-received in the past, I decided to do a complete analysis and
>> > context of the various things that have been floated about recently.
>> >
>> > The full writeup is here:
>> >
>> > ›ߡÐD,ð'š“
>> > ƒäëhttps://peakd.com/hive-168588/@crell/object-properties-and-immutability
>> >
>> > I hope it proves stimulating, at least of discussion and not naps.
>> >
>>
>> Thanks for the nice write up Larry!
>>
>> Is there a reason you didn't mention the proposal for immutable classes?
>> (probably because it never went into a final RFC)
>>
>> https://externals.io/message/94913#94913
>>
>> https://externals.io/message/79180#79180
>
> Two main reasons:
>
> 1) It's not been discussed recently (see how old the dates are on those
> messages), so I wasn't thinking about it.
>
> 2) An immutable class would in all practicality be the same as a class where
> all the properties are initonly (or writeonce, but that was already
> rejected). So any arguments for/against initonly apply in aggregate to an
> immutable class.
>
> --Larry Garfield
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: https://www.php.net/unsub.php
>
>
Instead of shoe-horning everything into the PHP object system, did
anyone consider adding support for records instead, which would always
be immutable, and could support the spread operator for cloning-with
similar as in JavaScript or OCaml? They could be based on PHP arrays
and thus be passed by value.
Olle