Re: [RFC] Asymmetric visibility
| From: | Mike Schinkel | Date: | Fri, 12 Aug 2022 02:52:08 +0000 |
| Subject: | Re: [RFC] Asymmetric visibility | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-118425@lists.php.net to get a copy of this message | ||
> On Aug 11, 2022, at 7:38 PM, André Hänsel <andre@webkr.de> wrote:
>
> Nicolas Grekas wrote:
>
>> But I'm also wondering about the use case where asymmetry would be
>> useful in practice now that we have readonly?
>> I voted against readonly at the time because it didn't address
>> cloning, and also because it deprives end-users vs code authors IMHO
>> (alike "final"). I would have very much prefered asymmetric
>> visibility back then. But now that we are here, what are the use cases?
>
> Isn't it (obviously?) to have setters that ensure all invariants of the
> properties are met? I'd still rather have Property Accessors as
> described in https://wiki.php.net/rfc/property_accessors, but I
> think
> AV is a step in the right direction.
>
> As for readonly, I don't understand why that exists at all.
For immutability.
Here is one reference on immutability offered up by the google gods:
https://hackernoon.com/5-benefits-of-immutable-objects-worth-considering-for-your-next-project-f98e7e85b6ac
<https://hackernoon.com/5-benefits-of-immutable-objects-worth-considering-for-your-next-project-f98e7e85b6ac>
Immutability goes hand-in-hand with Functional Programming (FP.) While PHP is not a functional
programming language, PHP developers can gain benefits from an FP style for which immutability is
beneficial.
Also from the google gods, if you are unfamiliar with FP:
https://alvinalexander.com/scala/fp-book/benefits-of-functional-programming/
<https://alvinalexander.com/scala/fp-book/benefits-of-functional-programming/>
Hope this helps.
-Mike
P.S. Also, the Internals list's very own Larry Garfield is a huge advocate for FP in PHP,
voilà:
https://leanpub.com/thinking-functionally-in-php
https://www.garfieldtech.com/taxonomy/term/95
> Yes, it's
> good that readonly properties can only be set from within the class,
> but only once, so you get setters that throw when called a second time,
> which I think is very, VERY unexpected behavior. Calling them
> "readonly" is also somewhat misleading because of course the objects
> assigned to those "readonly" properties can still be mutated, they can
> just not be reassigned.
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: https://www.php.net/unsub.php
>