Edit report at http://bugs.php.net/bug.php?id=54541&edit=1
ID: 54541 User updated by: gys0324 at yeah dot net Reported by: gys0324 at yeah dot net Summary: spl_autoload_register Loading order Status: Open Type: Bug Package: SPL related Operating System: Win PHP Version: 5.2.17 Block user comment: N Private report: N New Comment: There is two classes extend BClass, so the error has been happened. But if just one class which is A0 or A1 extends BClass, the expected result will be displayed. Previous Comments: ------------------------------------------------------------------------ [2011-04-15 15:03:02] gys0324 at yeah dot net Description: ------------ spl_autoload_register Loading order Test script: --------------- A0Class.php <? namespace TESTING; use TESTING\BClass; class A0Class extend BClass{ } A1Class.php <? namespace TESTING; use TESTING\BClass; class A1Class extend BClass{ } BClass.php <? namespace TESTING; use TESTING\BClass; class BClass{ public function __construct(){ echo "Child Start"; } } Bootstrap.php <?php namespace TESTING; class Bootstrap { private static $classes = array (); public static function init() { Bootstrap::requireOnce ( __DIR__ ); Bootstrap::loadClass (); } public static function getClasses() { return Bootstrap::$classes; } private static function requireOnce($path) { foreach ( scandir ( $path ) as $object ) { if ($object != '.' && $object != '..') { $object = $path . DIRECTORY_SEPARATOR . $object; if (is_file ( $object ) && file_exists ( $object )) { if (preg_match ( '/\.php$/', $object ) && ! preg_match ( '/Bootstrap\.php$/', $object ) && ! preg_match ( '/testFile\.php$/', $object ) && !in_array()) { Bootstrap::$classes [] = $object; } } else if (is_dir ( $object )) { Bootstrap::requireOnce ( $object ); } } } } private static function loadClass() { for($i = 0; $i < count ( Bootstrap::$classes ); $i ++) { require_once Bootstrap::$classes [$i]; } } } spl_autoload_register ( array ('TESTING\Bootstrap', 'init' ) ); testFile.php <?php require_once 'lib/Bootstrap.php'; use TESTING\A0Class; $a0 = new A0Class(); Expected result: ---------------- Child Start Actual result: -------------- Fatal error: Class 'TESTING\BClass' not found ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=54541&edit=1