Ответ
Настройка автозагрузки выполняется в секции autoload файла composer.json. Composer поддерживает несколько стандартов, основным из которых является PSR-4.
1. PSR-4 (рекомендуемый стандарт): Соответствие пространства имён структуре директорий.
{
"autoload": {
"psr-4": {
"MyVendor\MyApp\": "src/"
}
}
}
"MyVendor\MyApp\": Префикс пространства имён. Двойной обратный слэш — экранирование для JSON."src/": Базовая директория относительноcomposer.json, где находятся классы.
Структура проекта:
project/
├── composer.json
└── src/
├── Controller/
│ └── HomeController.php // Класс: MyVendorMyAppControllerHomeController
└── Model/
└── User.php // Класс: MyVendorMyAppModelUser
2. Classmap (для legacy-кода или не-PSR структур): Composer просканирует указанные директории и создаст карту всех найденных классов.
{
"autoload": {
"classmap": ["lib/", "app/Models/", "database/seeds/"]
}
}
3. Files (для загрузки отдельных файлов, например, функций):
{
"autoload": {
"files": ["src/helpers.php"]
}
}
После изменения composer.json необходимо обновить автозагрузчик:
# Эта команда сгенерирует/обновит файл vendor/autoload.php
composer dump-autoload
# Или с флагом -o для оптимизации (преобразует PSR-4/0 в classmap для повышения скорости)
composer dump-autoload -o
Использование в коде: Просто подключите сгенерированный файл в точке входа (например, index.php).
require __DIR__ . '/vendor/autoload.php';
// Теперь классы загружаются автоматически
$obj = new MyVendorMyAppControllerHomeController();