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.