Re: [RFC] Deprecate dynamic properties
| From: | Marco Pivetta | Date: | Wed, 25 Aug 2021 10:55:41 +0000 |
| Subject: | Re: [RFC] Deprecate dynamic properties | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-115805@lists.php.net to get a copy of this message | ||
Hey Nikita
On Wed, Aug 25, 2021 at 12:03 PM Nikita Popov <nikita.ppv@gmail.com> wrote:
> Hi internals,
>
> I'd like to propose the deprecation of "dynamic properties", that is
> properties that have not been declared in the class (stdClass and
> __get/__set excluded, of course):
>
> https://wiki.php.net/rfc/deprecate_dynamic_properties
>
> This has been discussed in various forms in the past, e.g. in
> https://wiki.php.net/rfc/locked-classes as a class modifier and
> https://wiki.php.net/rfc/namespace_scoped_declares /
>
>
> https://github.com/nikic/php-rfcs/blob/language-evolution/rfcs/0000-language-evolution.md
> as a declare directive.
>
> This RFC takes the more direct route of deprecating this functionality
> entirely. I expect that this will have relatively little impact on modern
> code (e.g. in Symfony I could fix the vast majority of deprecation warnings
> with a three-line diff), but may have a big impact on legacy code that
> doesn't declare properties at all.
>
I'm totally on board with this!
Others in the thread have mentioned that these dynamic properties can be
used for lazy-loading purposes, but I think we've demonstrated (over the
years) that this can be achieved in a type-safe way anyway, and dynamic
properties are not needed at all.
Over the past decade, I've not seen a single valid use of dynamic
properties either.
If this passes, I'll also deprecate and discontinue experiments like
https://github.com/Ocramius/LazyProperty
Greets,
Marco Pivetta
http://twitter.com/Ocramius
http://ocramius.github.com/