PHP: функция __autoload никогда не называлась

Итак, у меня есть xampp. Я протестировал этот код на ZendServer, получим то же самое.

<?php error_reporting(E_ALL); define ("ABS_PATH", 'C:\xampp\htdocs\oopHotLine\\'); function __autoload($class_name) { echo 'gg'; require_once (ABS_PATH.'classes\\'.$class_name.'.php'); } $process=new Main('1'); ?> 

после php.exe -a index.php у меня есть:

 Interactive mode enabled Fatal error: Class 'Main' not found in C:\xampp\htdocs\oopHotLine\index.php on line 10 [Finished] 

поэтому он не показывает вывод «gg». Если я вручную сделаю __autoload ('Main'); – все нормально. То же самое для руководства require_once или include. Все разрешения в папке Windows установлены на полный доступ. Версия Php – Версия PHP => 5.3.8;

Пожалуйста помоги.

Поскольку DaveRandom указал:

 Autoloading is not available if using PHP in CLI interactive mode. 

Итак, вместо использования php.exe -a index.php вырежьте -a off и попробуйте запустить скрипт с php.exe index.php .

Заметки из руководства по PHP по этому вопросу, которые могут иметь значение:

Судя по первому сообщению, это, вероятно, ответ:

Автозагрузка недоступна при использовании PHP в интерактивном режиме CLI.

…но также:

Функция spl_autoload_register () предоставляет более гибкую альтернативу для автозагрузки классов. По этой причине использование __autoload () не рекомендуется и может быть устаревшим или удаленным в будущем.

Помимо этого, вот как я напишу вашу функцию автозагрузки:

 function __autoload($class_name) { if (file_exists(ABS_PATH."classes/$class_name.php")) { // At least check the file exists before you require it! // Forward slashes work on Windows too (in PHP at least)... and they make it more portable require_once (ABS_PATH."classes/$class_name.php"); } } 

http://www.php.net/manual/en/function.spl-autoload-register.php

Если ваш код имеет существующую функцию __autoload, эта функция должна быть явно зарегистрирована в стеке __autoload. Это связано с тем, что spl_autoload_register () эффективно заменит кеш-память для функции __autoload либо spl_autoload (), либо spl_autoload_call ().