Этот вопрос был задан в 2010 году. Я вижу связанную проблему, но рекомендуемые решения 2010 года не решают ее.
Я использую PHPExcel v 1.8.0 (март 2014)
Предложения, сделанные в исходном ответе, были включены, и остальная часть системы все еще работает нормально, например, у меня есть файл init.php, который вводится для каждого скрипта, который включает в себя следующее, как предлагалось в предыдущем посте:
function myAutoload($Class)
{
require_once 'Classes/' . $Class . '.php';
}
spl_autoload_register('myAutoLoad')
Все файлы {classes.php} находятся в папке Classes / вне корневого каталога документа, включая, конечно, PHPExcel.php. Папка PHPExcel также содержится в папке Classes /.
Я пробовал разные способы раскрутки PHPExcel, включая обычный
$spreadsheet = new PHPExcel;
В качестве альтернативы я также попытался определить класс Spreadsheet
Class Spreadsheet extends PHPExcel {.... }
Все они выдают ту же ошибку, что и вырезать и вставить в вышеупомянутый
Я успешно перенес остальную часть процессов в приложении из процедурного стиля в объектно-ориентированную систему, и это стоило того, чтобы потратить на него недели. Это последнее препятствие с PHPExcel, однако, заставило меня одурачить!
Мы ценим любые предложения
Измените ваш автозагрузчик так, чтобы он возвращал false, если он не может загрузить указанный файл:
function myAutoload($Class)
{
if (file_exists('Classes/' . $Class . '.php')) {
require_once 'Classes/' . $Class . '.php';
return true;
}
return false;
}
Таким образом, автозагрузка будет осуществляться через ваш собственный автозагрузчик и запускать следующий автозагрузчик в «очереди» (автозагрузчик PHPExcel), если он не найдет запрошенный файл через ваш собственный автозагрузчик. Если вы не вернете false
обработчик автозагрузчика SPL не потрудится работать через любые другие автозагрузчики «в очереди»
Других решений пока нет …