Как делается автозагрузка классов на php. Каким должен быть класс, чтобы его можно было подключить автоматически. Рассмотрим код класса и автозагрузчика.
При разработке программ на php мы используем разные классы. Перед использованием класса приходится подключать файл, в котором он находится. Это становится неудобно, когда надо подключить много файлов. Или особенно если в каждом файле требуется подключать свой набор php-файлов.
Всё это упрощается с применением автозагрузчика. Рассмотрим, как это работает. Допустим, у нас есть файл с классом Products по такому пути:
Classes\Shop\Products.php
Содержимое файла такое:
namespace Classes\Shop;
class Products {
public function getAll() {
}
}
И в корне есть файл автозагрузчика — Autoload.php. В котором следующий код:
class Autoload
{
public static function initial()
{
spl_autoload_register(function ($class_name) {
// Получим путь к файлу
$path = __DIR__ . '/' . $class_name . '.php';
// Заменим "\" на "/", т.к. в путях другой слэш
$path = str_replace(['\\', '/'], DIRECTORY_SEPARATOR, $path);
// Если файл с классом не нашёлся
if (!is_file($path)) {
echo 'Файл не найден: ' . $path;
exit();
}
require_once $path;
});
}
}
Потребовалось использовать класс Products. Создаём объект класса Products:
$products_object = new Products();
Если до этого не был подключен файл с классом Products, то будет ошибка. А теперь подключим автозагрузчик до создания объекта. То есть вот так:
require_once __DIR__ . '/Autoload.php';
Autoload::initial();
$products_object = new Products();
А теперь ошибки не будет. Автозагрузчик при первом использовании несуществующего класса Products подключит файл с этим классом.
Чтобы автозагрузчик смог загрузить нужный файл есть некоторые правила:
1. Каждый класс должен быть в отдельном файле;
2. Namespace должен совпадать с путём к файлу.