Re: [RFC] Property hooks, nee accessors
| From: | Claude Pache | Date: | Mon, 29 May 2023 20:28:59 +0000 |
| Subject: | Re: [RFC] Property hooks, nee accessors | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-120440@lists.php.net to get a copy of this message | ||
> Le 8 mai 2023 à 23:38, Larry Garfield <larry@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.
—Claude