Вопрос! есть код! init.php Код (PHP): spl_autoload_register('initAutoLoad'); function initAutoLoad($class){ include_once 'class'. DS . $class . EXT; } spl_autoload_register('worksAutoLoad'); function worksAutoLoad($class){ include_once 'class'. DS . 'abstract' . DS . $class . EXT; } index.php $a = new User(); $a->getName(); Соответственно в папке class есть класс User, а в папке class/abstract класс Auser все вроде отрабатывает но выкидывает ВОРНИНГ так как 1 загрузчик не может подключить class/Auser как то не получиться избавиться от ошибки!
Warning: include_once(class\Auser.php) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in Z:\home\localhost\www\register\conf\init.php on line 13
ну все правильно. создан стек автозагрузки. вызывается неизвестный класс. автозагрузчик обращается к стеку функций автозагрузки. первая в стеке функция билдит свой вариант расположения класса и жестко его грузит. поскольку файла там нет то инклюд высыпается ворнингом. невероятно простое "решение" данной проблемы это одно из трех: - единственный автозагрузчик - проверка существования файла (ну это при любом кол-ве загрзучиков) - жесткое кодирование подключения нужных файлов
единственный автозагрузчик - не интересно так как хочеться делать папки в папках итд! проверка существования файла Код (PHP): function initAutoLoad($class){ if(file_exists("class/$class")){ include_once 'class'. DS . $class . EXT; } } не работает Fatal error: Class 'Db_ext' not found