php composer-php autoload

php - ¿Cómo uso Composer para cargar automáticamente las clases desde fuera del proveedor?



composer-php autoload (1)

Yo uso el cargador automático psr-4 del compositor:

"autoload": { "psr-4": { "DG//Munchkin//": "src/DG/Munch/" } }

Esto carga las clases de /var/www/html/xxx/vendor/yyy/src/DG/Munch

Pero, ¿cómo puedo cargar clases desde /var/www/html/xxx/ ?

Escribí mi propio cargador automático, pero cuando necesito el vendor/autoload.php ( vendor/autoload.php compositor) y mi cargador automático, no funcionará hasta que cree una instancia de una clase en mi propio cargador automático.


El directorio src estaría en la raíz de su proyecto. Está en el mismo nivel que el directorio de vendor .

Si usted define

"autoload": { "psr-4": { "DG//Munchkin//": "src/DG/Munch/" } }

esto no cargará clases de /var/www/html/xxx/vendor/yyy/src/DG/Munch , como ha dicho.

Porque la estructura de tu proyecto es:

/var/www/html/ +- /xxx (project) - composer.json +- /src +- DG +- Munch +- /vendor - autoload.php +- vendor-projectA +- vendor-projectB +- yyy

El espacio de nombres /DG/Munchkin se asignaría a las clases dentro de

/var/www/html/xxx/src/DG/Munch y no dentro

/var/www/html/xxx/vendor/yyy/src/DG/Munch .

Pero, ¿cómo puedo cargar clases desde / var / www / html / xxx /?

Defina las rutas en el composer.json (dentro de / var / www / html / xxx /) de su proyecto:

"autoload": { "psr-4": { "ProjectRoot//" : "", "NamspaceInSourceDir//" : "src/" } }

o cargue el autocargador compositor en su index.php o durante su arranque y agregue las rutas manualmente:

$loader = require ''vendor/autoload.php''; $loader->add(''Namespace//Somewhere//Else//', __DIR__); $loader->add(''Namespace//Somewhere//Else2//', ''/var/www/html/xxx'');

Referencia: getcomposer.org/doc/04-schema.md#autoload