Hey everyone. Any news on this? I'm really excited about this one. =)
-- Erick de Azevedo Lima Em ter., 30 de mai. de 2023 às 14:15, Larry Garfield <la...@garfieldtech.com> escreveu: > > > -- > Larry Garfield > la...@garfieldtech.com > > On Mon, May 29, 2023, at 8:28 PM, Claude Pache wrote: > >> Le 8 mai 2023 à 23:38, Larry Garfield <la...@garfieldtech.com> a écrit > : > >> > >> Ilija Tovilo and I would like to offer another RFC for your > consideration. It's been a while in coming, and we've evolved the design > quite a bit just in the last week so if you saw an earlier draft of it in > the past few months, I would encourage you to read it over again to make > sure we're all on the same page. I'm actually pretty happy with where it > ended up, even if it's not the original design. This approach eliminates > several hard-to-implement edge cases while still providing a lot of > functionality in one package. > >> > >> https://wiki.php.net/rfc/property-hooks > >> > > > > Hi, > > > > If I understand correctly, given: > > > > <?php > > > > class C { > > > > public int $someInt; > > > > public float $someFloat; > > > > public int $someIntWithHook { > > get => $field; > > set => $field = $value; > > } > > > > public float $someFloatWithHook { > > get => $field; > > set => $field = $value; > > } > > > > } > > ?> > > > > we have: > > > > <?php > > $obj = new C; > > var_dump($obj->someInt = 42.0); // int(42) > > var_dump($obj->someFloat = 42); // float(42) > > ?> > > > > but: > > > > <?php > > $obj = new C; > > var_dump($obj->someIntWithHook = 42.0); // float(42) > > var_dump($obj->someFloatWithHook = 42); // int(42) > > ?> > > > > If I am correct, it means that the “This also implies that adding a set > > hook to a property cannot change the result of the = operator” > > statement is a bit too optimistic. > > We looked into this a bit; it's correct if you're in weak mode. In strict > mode, it applies only to $o->float = $anInt, as that's the only legal type > coercion. Still, you're right that it's not quite "cannot change", so I've > adjusted the wording to better describe the edge cases. The behavior is > still the same as __set(), so we don't see a need to change it further. > > Thanks for the catch. > > --Larry Garfield > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: https://www.php.net/unsub.php > >