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
>
>

Reply via email to