Стандарт PSR-4 требует от вас строгой структуры файловой системы, основанной на пространствах имен. Скажем, у вас есть приложение в каталоге src
с пространством имен App
, тогда все подпространства будут отображать подкаталоги, а имена классов будут такими же, как имена файлов, без расширения .php
.
{
"autoload": {
"psr-4": { "App\\": "src/" }
}
}
src/
Foo/
Bar.php <---- App\Foo\Bar class
Baz.php <---- App\Baz class
автозагрузчика то «знает», где искать класс определенного полного имени и поэтому не требует команды дамп-автозагрузку нюхать файлы классов.
Проблемы с производительностью затем решаются с помощью флага composer dump-autoload --optimize-autoloader
или -o
, который будет генерировать карту классов аналогичным способом, который делает автозагрузка classmap.
С другой стороны, classmap самозарядные не требует, чтобы иметь практически любую определенную структуру файла или каталога, он будет рекурсивно пройти через .php
и .inc
файлов в указанных каталогах и файлах и нюхать классов в них ,
{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}
Этих классы затем добавляются в список (кэшированном в PHP файл в каталоге производителя/композитора), который используется для автозагрузки.
Любой новый класс должен быть добавлен в этот список, запустив команду composer dump-autoload
.
Что касается простых файлов php без класса? например просто файл php с кучей глобальных функций, как добавить это? – Toskan
@ Тоскан см. Https://getcomposer.org/doc/04-schema.md#files – Finwe