Hi Rowan, Thanks for the RFC.
On Thu, Nov 16, 2023 at 9:42 PM Rowan Tommins <rowan.coll...@gmail.com> wrote: > > I have finally written up an RFC I have been considering for some time: > Harmonise "untyped" and "typed" properties > > RFC URL: https://wiki.php.net/rfc/mixed_vs_untyped_properties Unifying the unset behavior sounds sensible. I don't see a good reason for a declared property to be hidden through unset. If this behavior is desired, the property should be declared dynamically in the constructor with #[AllowDynamicProperties] added to the class. Like Jakub, I am also worried about the BC break of changing the default value to uninitialized. However, I don't think opt-in behavior is worthwhile (because I don't believe people make sufficient use of it, while adding something new we have to support forever). If we pick either of the options you presented (1. initialize all nullable properties to null, 2. Make all properties uninitialized) I'd vote for the first one. Then again, given (it seems) people are happier with the strict behavior of typed properties, do we need to unify the behavior at all if it means losing that? Currently, they can choose the behavior they prefer by adding or omitting mixed. Furthermore, the first approach clashes somewhat with readonly. Readonly can't have null as a default value because that would make it legal to access the value before the property is explicitly initialized, and the property would no longer be uninitialized, making the explicit assignment illegal. We could just not add the default value for readonly, but that means more special rules that we're trying to avoid. Ilija -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php