Ответ
__autoload() — это устаревшая магическая функция в PHP, которая автоматически загружает файл с определением класса при первой попытке его использования, если этот класс ещё не был объявлен.
Пример использования:
function __autoload($className) {
require_once __DIR__ . '/classes/' . $className . '.php';
}
// При создании объекта, если класс MyClass не определён,
// будет вызвана __autoload('MyClass')
$obj = new MyClass();
Ключевые недостатки и современная альтернатива:
- Устаревание: Функция объявлена устаревшей в PHP 7.2 и полностью удалена в PHP 8.0.
- Однообразие: В скрипте можно определить только одну функцию
__autoload(), что ограничивает гибкость. - Стандарт: Сейчас следует использовать
spl_autoload_register(), который позволяет зарегистрировать несколько автозагрузчиков и создавать более сложные схемы автозагрузки, соответствующие PSR-4.
Современный вариант с spl_autoload_register:
spl_autoload_register(function ($className) {
$file = __DIR__ . '/src/' . str_replace('\', '/', $className) . '.php';
if (file_exists($file)) {
require_once $file;
}
});