Hi
Am 2025-07-08 17:32, schrieb Nicolas Grekas:
I also read Tim's argument that new features could be stricter. If one
wants to be stricter and forbid extra behaviors that could be added by
either the proposed hooks or __get, then the answer is : make the class
final. This is the only real way to enforce readonly-ness in PHP.
Making the class final still would not allow to optimize based on the
fact that the identity of a value stored in a readonly property will not
change after successfully reading from the property once. Whether or not
a property hooked must be considered an implementation detail, since a
main point of the property hooks RFC was that hooks can be added and
removed without breaking compatibility for the user of the API.
engine-assisted strictness in this case. You cannot write such code in
a
non-readonly way by mistake, so it has to be by intent.
That is saying "it's impossible to introduce bugs".
PS: as I keep repeating, readonly doesn't immutable at all. I know this
is
written as such in the original RFC, but the concrete definition and
implementation of readonly isn't: you can set mutable objects to
readonly
properties, and that means even readonly classes/properties are
mutable, in
the generic case.
`readonly` guarantees the immutability of identity. While you can
certainly mutate mutable objects, the identity of the stored object
doesn't change.
Best regards
Tim Düsterhus