Автозагрузка классов

Для удобства код классов выносят в отдельные php файлы и подключают их по мере надобности.

Отдельные php файлы с классами
include_once '/classes/mail.php';
$mail = new Mail();
PHP

Автозагрузка позволяет упростить этот процесс и использовать классы без include.
Существует два метода:

1

функция является устаревшей и с версии PHP 7.2 её не рекомендуется использовать.

function __autoload($name) {
	include_once '/classes/' . strtolower($name) . '.php';
}

...

$mail = new Mail();
PHP

При создании экземпляра класса Mail вызовется функция __autoload(), которая по имени класса подключит файл /classes/mail.php.

2

SPL autoload появился в PHP 5.1 и предназначена для замены __autoload().

spl_autoload_register('autoload');
 
function autoload($name)
{
	include_once '/classes/' . strtolower($name) . '.php';
}

...

$mail = new Mail();
PHP

В функцию передается название функции которая будет вызваться для подключения файлов.

Для отключения автозагрузки применяется функция 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');
PHP
02.11.2017, обновлено 09.10.2021
6061
Предыдущая запись ZIP в PHP (ZipArchive)
Следующая запись PHP паттерн Registry

Комментарии

, чтобы добавить комментарий.

Другие публикации

Преобразование CSV в XLSX на PHP
В статье приведены два примера конвертации фалов csv в xlsx, алгоритм следующий...
9015
+2
Загрузка файлов на сервер PHP
В статье приведен пример формы и php-скрипта для безопасной загрузки файлов на сервер, возможные ошибки и рекомендации при работе с данной темой.
72251
+22
Работа с FTP в PHP
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
18508
+2
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
28502
+8
Поиск файлов в PHP
Для поиска файлов на сервере хорошо подходит функция glob(), которая возвращает список файлов по заданной маске, например...
23979
+1
PHP класс для отправки E-mail
Отправка писем в кодировке UTF-8 и формате HTML, вложение файлов, дамп писем на сервере в файле eml.
16261
+5