Re: [RFC] Asymmetric Visibility, v2
| From: | Rob Landers | Date: | Fri, 26 Jul 2024 12:58:48 +0000 |
| Subject: | Re: [RFC] Asymmetric Visibility, v2 | ||
| References: | 1 2 3 4 5 6 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-124611@lists.php.net to get a copy of this message | ||
On Fri, Jul 26, 2024, at 13:36, Jordi Boggiano wrote:
> On 21.07.2024 11:21, Rob Landers wrote:
>>
>> On Sat, Jul 20, 2024, at 23:51, Larry Garfield wrote:
>>> On Sat, Jul 20, 2024, at 7:22 AM, Rodrigo Vieira wrote:
>>> > Will the alternative syntax on hook not even be put to a vote?
>>>
>>> It was, a year and a half ago when Aviz was first proposed. The preference was split,
>>> but leaned toward the prefix-style syntax. So we went with that. I don't think we'll
>>> ever get everyone to want the same syntax, but we're using the one that was both somewhat more
>>> popular, and (as discussed in the RFC) arguably superior.
>>>
>>> As the "comments in yield from" thread has shown, *any* even slight change to
>>> PHP's syntax will require work from static analysis tools. That's the nature of the
>>> problem space, regardless of the syntax specifics.
>>>
>>> --Larry Garfield
>>>
>>
>> Just to play devil’s advocate, it was also before we had property hooks who advertised
>> itself as a way to “wrap and guard access to object properties” but we are simply ignoring their
>> existence here.
>>
> Just to compare them, because my initial gut feel was to say "yes please just put this
> together with hooks"..
>
> As far as I understand these would be the two options?
>
> class C {
> public protected(set) $answer { get => 42; set => { $this->answer = $value *
> 2; }
> public private(set) $publicReadOnly;
> }
>
>
> class C {
> public $answer { get => 42; protected set => { $this->answer = $value * 2; }
> public $publicReadOnly { private set; }
> }
>
> And now that I see it spelled out more, I do agree that while it appears a bit more verbose,
> and this "(set)" looks odd at first, having all the visibility upfront is a lot clearer
> than having to read through the hooks to see what visibility applies.
On a large property hook that potentially span hundreds of lines, I'd rather only need to
scroll up to the "set =>" to see how it is set vs. going all the way back up to the
property itself.