PSR-4 зіставляє префікс простору імен з каталогом. Решта імені класу перетворюється на шлях до файлу:
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
App\Services\Billing\Invoice → app/Services/Billing/Invoice.php.
Як це працює: vendor/autoload.php реєструє функцію через spl_autoload_register(). Коли код уперше звертається до невідомого класу, PHP викликає її, вона обчислює шлях і робить require. Класи, які не знадобилися в запиті, не завантажуються взагалі.
Що треба знати:
- Регістр важливий: на Linux
invoice.phpдля класуInvoiceне знайдеться, хоча на macOS усе працюватиме. Класична причина «на проді клас не знайдено». - Один клас - один файл, ім'я файлу збігається з ім'ям класу.
- Після зміни секції
autoloadуcomposer.jsonпотрібенcomposer dump-autoload. Нові класи в уже налаштованому каталозі підхоплюються без нього. - Для файлів з функціями (не класами) є секція
"files"- вони підключаються на кожному запиті.