Re: [RFC] Asymmetric Visibility, v2

From: 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.

« previous php.internals (#124611) next »