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

Когда я копался в источнике пакета Composerна GitHub Я заметил что былиPHP-файлы, которые соответствуют именам пространства имен но предшествовали подчеркиванием. Озадаченный, я потянул пакет вниз (через Composer) и заметил, что загрузчик классов, который генерирует ComposerrequireЭти файлы подчеркнуты явно, а не автозагрузка, как я ожидал.

Например, в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, которую я пропустил, но потом я посмотрел на сгенерированный Composerautoload_real.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"
    ]
}

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

Ответы на вопрос(1)

Ваш ответ на вопрос