Bug #78887 [Fbk]: Changed order in get_declared_classes() with parent(s) loaded by autoloader
| From: | nikic@php.net | Date: | Fri, 29 Nov 2019 22:43:25 +0000 |
| Subject: | Bug #78887 [Fbk]: Changed order in get_declared_classes() with parent(s) loaded by autoloader | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-223955@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=78887&edit=1
ID: 78887
Updated by: nikic@php.net
Reported by: andi dot wr at googlemail dot com
Summary: Changed order in get_declared_classes() with
parent(s) loaded by autoloader
Status: Feedback
Type: Bug
Package: SPL related
Operating System: Linux
PHP Version: 7.4.0
Block user comment: N
Private report: N
New Comment:
Definitely unspecified behavior, at best an upgrading note can be added for this.
Previous Comments:
------------------------------------------------------------------------
[2019-11-29 14:56:56] requinix@php.net
Sounds like undefined behavior to me. Is there documentation somewhere that says they'll be
returned in a certain order?
------------------------------------------------------------------------
[2019-11-29 14:54:47] andi dot wr at googlemail dot com
Description:
------------
After loading a class which inherits from other classes and parent classes are loaded by autoloader,
get_declared_classes() gives another order than in previous PHP versions.
< 7.4: parent => child
7.4: child => parent
Result of code example (reverse order of get_declared_classes()):
Array
(
[0] => A
[1] => B
...
)
vs.
Array
(
[0] => B
[1] => A
...
)
Url: https://3v4l.org/lEnsR
Test script:
---------------
<?php
spl_autoload_register(function($class){
if ($class === 'A') {
eval("class A { }");
}
});
class B extends A {
}
print_r(array_reverse(get_declared_classes()));
Expected result:
----------------
Parent class(es) should be declared before child class.
Actual result:
--------------
Parent classes are declared before child class.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=78887&edit=1