Re: Revisit RFC “Property Accessors Syntax 1.2”
| From: | ilija dot tovilo at me dot com | Date: | Mon, 19 Dec 2016 23:02:05 +0000 |
| Subject: | Re: Revisit RFC “Property Accessors Syntax 1.2” | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-97446@lists.php.net to get a copy of this message | ||
I see, that makes a lot of sense. Sadly, I am neither a C developer nor do I understand the PHP
interpreter codebase in the slightest.
At least I now understand why the RFC was rejected, maybe that will comfort me when I cry myself to
sleep tonight :P
On 19 Dec 2016, 23:47 +0100, Larry Garfield <larry@garfieldtech.com>, wrote:
> On 12/19/2016 02:57 PM, ilija.tovilo@me.com wrote:
> > Hi everyone
> >
> > There was an RFC about a C#-like property syntax almost four years ago that got declined:
> > https://wiki.php.net/rfc/propertygetsetsyntax-v1.2
> >
> > It failed by only 2-3 votes. In my opinion, PHP is still in need of this feature as it
> > would make the language much more expressive. Let me start by defining the problem. First of all,
> > almost all PHP frameworks hide their variables behind getters and setters. Here are some of the
> > reasons why that is a good idea, I’m sure there are many more:
> >
> > - Ability to sanitize input
> > - Ability to lazily load data when requested (getter was called)
> > - Ability to expose only getter or setter publicly
> > - Easily mockable accessors for unit tests
> > - Ability to execute arbitrary code when accessors are called
> > - Modifiable business logic without breaking the API
> >
> > Here are some of the negatives, though there are probably more here as well:
> >
> > - Large boilerplate for normal getters/setters
> > - Inconsistent syntax for reading/writing data
> > - Calling a method for setting data instead of using the more intuitive
> >
= operator
> > - Calling a method for accessing foreign variables while accessing private variables
> > directly
> > - Inability to use built in assignment operators like .=, +=, -=, etc.
> > - Disregard of the DRY principle
> >
> > The positives clearly outweigh the negatives as they are mostly syntactical. This is
> > probably why using getters/setters everywhere has been a good-enough solution for such a long time.
> > Because of that, just like the positives, the negatives have become a part of the language. Clearly,
> > abandoning getters and setters is no option for anyone. Nonetheless, the RFC I linked above offers a
> > way to get rid of the negatives without sacrificing any of the positives.
> >
> > Are there still any people who would like to see this happening just as much as I do?
> > I’m wondering if some of the people who have voted against the RFC might have changed
> > their opinion or vice versa.
> >
> > Many thanks for reading!
> >
> > Regards,
> > Ilija
>
> As I understand it from those involved, most people did want that
> feature. I still do. :-) However, there is as of yet no confirmed way
> to add it without more of a performance hit than many folks are willing
> to accept. That is, it's not the concept people object to, just the
> implementation.
>
> If someone can figure out how to make that work with a small enough
> performance hit (where 0 would be ideal, but I don't know if that's even
> possible), that person would make a lot of devs (including me) very very
> happy. I am, sadly, not such a person.
>
> --Larry Garfield
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>