Pre RFC - __debugType() magic method
| From: | Robin Chalas | Date: | Wed, 09 Feb 2022 13:49:28 +0000 |
| Subject: | Pre RFC - __debugType() magic method | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-117008@lists.php.net to get a copy of this message | ||
Hi internals,
I would like to propose exposing a new
__debugType() magic method.
Before going through the RFC process, I’d like to see if it brings some interest.
Implementing this method would allow changing the get_debug_type() return value when it
is given an instance of the implementing class.
The main target is decorators.
Currently when a class is decorated, any code calling get_debug_type() on an instance
of that class gets the decorator FQCN, while in some cases the desired information is the decorated
(inner) FQCN.
For instance, the Symfony framework decorates a lot of built-in and userland services with
“Traceable” classes that are meant to collect debugging information about the inner service e.g.
its execution time, return values, or just if it has been called or not when it’s part of a chain.
As a result, the code using such service needs to check if the service is decorated via an
instanceof check (so it needs to know about the Traceable type) and if it does, it calls a method to
access the inner object and use it in exceptions or log messages.
Adding such method would allow removing all that boiler.
Another target I can think of: inheritance-based proxy classes.
What do you think?
If this makes sense, I would be happy to work on the implementation myself, eventually with some
help from someone already used to php-src’s code.
Thank you.
Robin Chalas
Principal Engineer @Les-Tilleuls.coop
03 66 72 43 94
robin@les-tilleuls.coop
82 Rue Winston Churchill - 59160 Lomme