Katalog src
będzie znajdować się w katalogu głównym projektu. Jest na tym samym poziomie, co katalog vendor
.
Jeśli zdefiniujemy
"autoload": {
"psr-4": {
"DG\\Munchkin\\": "src/DG/Munch/"
}
}
ten nie będzie ładować klas z /var/www/html/xxx/vendor/yyy/src/DG/Munch
, jakbyś stwierdził.
Ponieważ struktura projektu jest:
/var/www/html/
+- /xxx (project)
- composer.json
+- /src
+- DG
+- Munch
+- /vendor
- autoload.php
+- vendor-projectA
+- vendor-projectB
+- yyy
Przestrzeń nazw \DG\Munchkin
będzie mapować do klas wewnątrz
/var/www/html/xxx/src/DG/Munch
a nie wewnątrz
/var/www/html/xxx/vendor/yyy/src/DG/Munch
.
Ale jak mogę załadować klasy z/var/www/html/xxx /?
Definiowanie ścieżek w composer.json (wewnątrz/var/www/html/xxx /) swojego projektu:
"autoload": {
"psr-4": {
"ProjectRoot\\" : "",
"NamspaceInSourceDir\\" : "src/"
}
}
lub załadować autoloadera kompozytor w index.php lub podczas jego ładowania początkowego i ręcznie dodać ścieżki:
$loader = require 'vendor/autoload.php';
$loader->add('Namespace\\Somewhere\\Else\\', __DIR__);
$loader->add('Namespace\\Somewhere\\Else2\\', '/var/www/html/xxx');
Odwoływanie: https://getcomposer.org/doc/04-schema.md#autoload
nie można po prostu użyć 'files' lub' classmap' autoloadera? https://getcomposer.org/doc/04-schema.md#autoload – hndr
Tak, pliki lub mapaklasa powinny wystarczyć. – Zarathuztra
Nie, ponieważ nie mogę wybrać folderów z zewnętrznego folderu dostawcy w sekcji automatycznego ładowania. –