Для удобства код классов выносят в отдельные php файлы и подключают их по мере надобности.
include_once '/classes/mail.php';
$mail = new Mail();
Автозагрузка позволяет упростить этот процесс и использовать классы без include.
Существует два метода:
функция является устаревшей и с версии PHP 7.2 её не рекомендуется использовать.
function __autoload($name) {
include_once '/classes/' . strtolower($name) . '.php';
}
...
$mail = new Mail();
При создании экземпляра класса Mail вызовется функция __autoload(), которая по имени класса подключит файл /classes/mail.php.
SPL autoload появился в PHP 5.1 и предназначена для замены __autoload().
spl_autoload_register('autoload');
function autoload($name)
{
include_once '/classes/' . strtolower($name) . '.php';
}
...
$mail = new Mail();
В функцию передается название функции которая будет вызваться для подключения файлов.
Для отключения автозагрузки применяется функция spl_autoload_unregister(), это бывает нужно при использовании сторонних расширений, например PHPExcel.
spl_autoload_unregister('autoload');
require_once '/PHPExcel/IOFactory.php';
$xls = PHPExcel_IOFactory::load($_FILES['file']['tmp_name']);
$xls->setActiveSheetIndex(0);
$sheet = $xls->getActiveSheet();
$array = $sheet->toArray();
spl_autoload_register('autoload');





