Урок 6. Автозагрузка классов и стандарт PSR-4 Flashcards

1
Q

Функция автозагрузки

A

Встроенная функция которая выполняется при первом обращении к классу, но ее логику можно переписать и выполнять автоматическое подключение классов в файл
spl_autoload_register()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Стандарт автоподгрузки PSR-4

A

Стандарт примеяется при создании автозагрузки любого типа классов

  1. Полный путь должен начинаться с первого и главного пространства имен
  2. После главного пространства в имени указываются подпространства имен
  3. Полное имя класса должно завершаться именем класса
  4. В именах классов можно использовать нижние подчеркивания и буквы с разным регистром
  5. Все классы ДОЛЖНЫ быть строго чувствительны к регистру
  6. Должна быть определена главная директория в которой будут находиться все файлы классов (src App)
  7. Название класса должно совпадать с названием файла в директории
  8. Функция автоподгрузки не должна ничего возвращать или обрабатывать
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Пример

A

spl_autoload_register(function ($className) {
$baseDir = __DIR__ . DIRECTORY_SEPARATOR . ‘src’;
$prefix = ‘App\’;
$prefixLen = strlen($prefix);
if (strncmp($prefix, $className, $prefixLen) !== 0) {
return;
}
$relativeClassName = substr($className, $prefixLen);
$fileName = $baseDir . DIRECTORY_SEPARATOR . str_replace(‘\’,
DIRECTORY_SEPARATOR, $relativeClassName) . ‘.php’;
if (file_exists($fileName)) {
require $fileName;
}
});

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Нормальный разбор

A

Функция автоподгрузки нужна чтобы просто при обращении к классу выстроить путь до файла поэтому
должна быть директория в которой расположены все классы приложения. Эта директория считается главным пространством имен например APP затем все файлы с классами делятся на подпространства имен ГЛАВНОЕ что бы имена файлов и подпространств полностью совпадали в том числе названия директорий./
В функцию spl_autoload_register() в колбек функцию передается полный путь пространства имен файла и все что нужно сделать это заменить префикс на путь до главной директории пространства имен и в конце добавить ‘.php’

How well did you know this?
1
Not at all
2
3
4
5
Perfectly