Fixing backtraces with custom get_class_name() handler
| From: | Dmitry Stogov | Date: | Wed, 22 Jun 2016 13:14:58 +0000 |
| Subject: | Fixing backtraces with custom get_class_name() handler | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-94197@lists.php.net to get a copy of this message | ||
Hi Nikita,
When we developed php 7.0, we replaced most calls to get_class_name() by simple obj->ce->name
reading.
However, this functionality was used by some 3-rd part extensions (e.g. Zend JavaBridge and may be
pecl/perl).
These extensions create proxy classes and control remote objects through RPC.
Actually, we broke the previous behavior of backtrace* and get_class()/get_parent_class() functions.
Backtrace may be fixed even in 7.0 with the following patch:
https://gist.github.com/dstogov/d84183da9b0d958dfe5cb8d711c8d677
However, we can't fix get_parent_class(), because we changed get_class_name() handler prototype
(removed "parent" argument).
get_class() may be fixed but I don't like to do this without get_parent_class(), because they
are going to be inconsistent.
What do you think about fixing backtrace in 7.0?
In my opinion, it looks consistent with other "debug" functions, e.g. var_dump() etc
Oz, as I understood, you already found a workaround for get_class/get_parent_class introducing
get_java_class(). right?
so, do you think it worth to fix get_class/get_parent_class in 7.1? (I think no)
Thanks. Dmitry.