On Tue, Nov 26, 2024, at 3:57 AM, Tim Düsterhus wrote:
> Hi
>
> Am 2024-11-25 17:52, schrieb Larry Garfield:
>> Static property asymmetric visibility was left out of the original RFC, 
>> because it seemed like it would be hard and of little use.  Turns out, 
>> Ilija found a way to make it easy.  (Ilija is smart.)  So here's a 
>> small RFC to add aviz to static properties, because we can't think of a 
>> reason to NOT do so.
>> 
>> https://wiki.php.net/rfc/static-aviz
>
> The RFC has the status “Draft” and does not appear to be linked in the 
> overview at https://wiki.php.net/rfc. Is it intended to be open for 
> discussion yet?

Paperwork oversight on my part.  Fixed now, thanks.

> Regarding the RFC contents: I am not sure the behavior of `private(set)` 
> implying `final` is obvious for static properties. Consider this example 
> (https://3v4l.org/bvQjM):
>
>      <?php
>
>      class Foo {
>          public static $baz;
>      }
>
>      class Bar extends Foo {
>          public static $baz;
>      }
>
>      Foo::$baz = '2';
>      Bar::$baz = '1';
>      var_dump(Foo::$baz, Bar::$baz);
>
> Non-static properties only have `$this->` for property access, but with 
> static properties you can distinguish between `self::` and `static::`, 
> which makes overriding a `private(set)` static property meaningful, 
> because they are actually independent properties.
>
> Best regards
> Tim Düsterhus

Hm, interesting point.  I am not sure of the best way to model that.

Thinking aloud, my expectation would be that it behaves similarly to how final 
static methods would behave.  Which appears to be a syntax error:  
https://3v4l.org/j8mp0#v8.4.1

So, shouldn't properties do the same?  

--Larry Garfield

Reply via email to