Соглашение о пространстве имен / папок.
Классы должны храниться в папках в соответствии с их пространствами имен.
В общем случае вы создадите каталог src / в своей корневой папке на том же уровне, что и vendor /, и добавите туда свои проекты. Ниже приведен пример структуры папок:
.
+-- src
|
+-- Book
| +-- History
| | +-- UnitedStates.php - namespace Book\History;
+-- Vehicle
| +-- Air
| | +-- Wings
| | | +-- Airplane.php - namespace Vehicle\Air\Wings;
| +-- Road
| | +-- Car.php - namespace Vehicle\Road;
+-- tests
+-- test.php
+-- vendor
Разница между PSR-0 и PSR-4
PSR-0
Это устарело. Глядя на vendor/composer/autoload_namespaces.php
файл, вы можете видеть пространства имен и каталоги, в которые они отображаются.
composer.json
"autoload": {
"psr-0": {
"Book\\": "src/",
"Vehicle\\": "src/"
}
}
- Ищу Книгу \ Историю \ UnitedStates в src / Book /History/UnitedStates.php
- Ищу Автомобиль \ Воздух \ Крылья \ Самолет в src / Автомобиль /Air/Wings/Airplane.php
PSR-4
Глядя на vendor/composer/autoload_psr4.php
файл, вы можете видеть пространства имен и каталоги, в которые они отображаются.
composer.json
"autoload": {
"psr-4": {
"Book\\": "src/",
"Vehicle\\": "src/"
}
}
- Находясь в поиске книгу \ История \ Соединенные Штаты в src /History/UnitedStates.php
- Ищу Автомобиль \ Воздух \ Крылья \ Самолет в src /Air/Wings/Airplane.php
composer.json
"autoload": {
"psr-4": {
"Book\\": "src/Book/",
"Vehicle\\": "src/Vehicle/"
}
}
- Ищу книгу \ История \ UnitedStates src / Book /History/UnitedStates.php
- Ищу Автомобиль \ Воздух \ Крылья \ Самолет в src / Автомобиль /Air/Wings/Airplane.php