Bug #78887 [Fbk]: Changed order in get_declared_classes() with parent(s) loaded by autoloader

From: 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

« previous php.bugs (#223955) next »