On 25/08/2021 13:45, Nikita Popov wrote:
We obviously need to keep support for dynamic properties on stdClass,
and if we do so, I would expect that to apply to subclasses as well.
Does that actually follow, though? Right now, there is no advantage to
extending stdClass, so no reason to expect existing code to do so, and
no reason for people doing so to expect it to affect behaviour.
Second, I consider "extends stdClass" to be something of a last-ditch
option. If you encounter a dynamic property deprecation warning, you
should generally resolve it in some other way, and only fall back to
"extends stdClass" as the final option.
That's a reasonable argument in terms of the multiple inheritance case.
My concern about the name remains though: people already do get confused
by the name "stdClass", because it's not in any way "standard", and
tells you nothing about what it does.
Reading "class Foo extends stdClass" gives the reader no clues what
magic behaviour is being inherited; "class Foo extends DynamicObject"
would be much more clear. Similarly, "$foo = new DynamicObject;
$foo->bar = 42;" is clearer than "$foo = new stdClass; $foo->bar = 42;"
Regards,
--
Rowan Tommins
[IMSoP]
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php