Paquetes de composición, carga automática de archivos no basados ​​en clases

Cuando estaba cavando en la fuente de un paquete de Composeren github Me di cuenta de que habíaarchivos php que coinciden con los nombres de espacio de nombres pero fueron precedidos con un guión bajo. Desconcertado, bajé el paquete (a través de Composer) y noté que el cargador de clases que Composer generarequireEstos archivos subrayados explícitamente, no se cargan automáticamente como esperaba.

Por ejemplo, en elcrunch/regular-expression paquete hay un espacio de nombres llamadoCrunch\RegularExpression:

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

Inicialmente pensé que estos archivos subrayados eran una característica del PSR-0 que había perdido, pero luego miré el Composer generado.autoload_real.php y vi que_RegularExpression.php (entre otros) se requería explícitamente:

…
$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;
…

No he podido encontrar ninguna documentación significativa sobre esta función de Composer. ¿Es un buen "estándar" para exportar dependencias de espacio de nombres no basadas en clases, como funciones y constantes?

Actualizar

Mi pregunta resultó ser un nombre poco apropiado. La respuesta seleccionada me lleva a descubrir que los activos no basados ​​en clases se pueden declarar explícitamente para cargarcomposer.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"
    ]
}

Los guiones bajos en los archivos fueron una convención utilizada para delinearlos de las definiciones de clase y no tienen ningún propósito especial en la carga automática.

Respuestas a la pregunta(1)

Su respuesta a la pregunta