Пакеты Composer, автозагрузка неклассифицированных файлов

Когда я врывался в источник пакета Composer на github, я заметил, что есть файлы php, которые соответствуют именам имен, но им предшествовал символ подчеркивания. Озадаченный Я вытащил пакет (через Composer) и заметил, что загрузчик классов, созданный Composer, require эти подчеркнутые файлы были явно, а не автозагрузкой, как я ожидал.

Например, в пакете crunch/regular-expression имеется пространство имен Crunch\RegularExpression :

 -- src ---- Crunch ------- RegularExpression <-- folder containing classes ------- _RegularExpression.php <-- file namespace to Crunch/RegularExpression containing functions and constants (instead of a class) 

Первоначально я думал, что эти подчеркнутые файлы были особенностью PSR-0, которую я пропустил, но затем я посмотрел на Composer, сгенерированный _RegularExpression.php и увидел, что _RegularExpression.php (среди прочих):

 … $loader->register(true); require $baseDir . '/src/Crunch/_RegularExpression.php'; require $baseDir . '/src/Crunch/RegularExpression/_Modifier.php'; require $baseDir . '/src/Crunch/RegularExpression/Pattern/_Modifier.php'; require $baseDir . '/src/Crunch/RegularExpression/Pattern/_Assertion.php'; return $loader; … 

Не удалось найти значимую документацию об этой функции Composer. Является ли это хорошим «стандартом» для экспорта неклассифицированных зависимостей на основе имен, таких как функции и константы?

Обновить

Мой вопрос оказался небольшим неправильным. Выбранный ответ заставил меня обнаружить, что неклассифицированные активы могут быть явно объявлены для загрузки в composer.json :

 "autoload": { "psr-0": { "Crunch\\RegularExpression": "src" }, "files": [ "src/Crunch/_RegularExpression.php", "src/Crunch/RegularExpression/_Modifier.php", "src/Crunch/RegularExpression/Pattern/_Modifier.php", "src/Crunch/RegularExpression/Pattern/_Assertion.php" ] } 

Символы подчеркивания в файлах были конвенцией, используемой для определения их из определений классов и не имеют особых целей в автозагрузке.

Композитор не обрабатывает эти файлы каким-либо особым образом. Автор пакета в этом случае использовал это как своего рода соглашение для хранения функций, которые, как кажется.

Файлы требуются Composer, потому что они определены как «файлы» автозагрузки в composer.json , а не из-за черной магии на имена файлов.