Стандартизация пространства имен фиги PHP

У меня есть применение в PHP с моей структурой mvc, и это следует следующей модели:

Namespace         Diretorio                              Desc
Nautilus\         root/Nautilus/src/Nautilus_Web/        Aplicação principal
Nautilus\Service  root/Nautilus/src/Nautilus_Service/    Serviços
Nautilus\Domain   root/Nautilus/src/Nautilus_Domain/     Modelos e repositórios

Я стандартизирую свой проект в соответствии с PHP-фигой и согласно документации, пространство имен должно соответствовать физическому управлению.

Интересно, делается ли стандартизация в неправильной форме, так как классы должны включать Nautilus\Service и Nautilus\Domain из управления Наутилуса пространства имен, которым это было бы:

укоренитесь / Наутилус / src / Nautilus_Web/....

Если мое пространство имен называет Наутилус физическим управлением, это должно быть:

root/Nautilus/src/Nautilus_Web/Nautilus нет? или затем повторно назначить пространство имен на Nautilus\Web дайте управлению.../src/Nautilus_Web оно переписывалось бы, правильно?

Спасибо!

0
задан 16.11.2019, 14:25
1 ответ

Я верю, чтобы продать три вопроса, тогда собираюсь ответить на них в заказе, который действительно больше причиняет боль: структура Управлений, пространства имен и содержание.

Как каждая структура или компонент / библиотека, он - владелец или сторонний, это - таможенный независимый политик PSR, от корня управления, обычно названного продавцом, имеет подуправление и, в нем, управлении для каждого ресурса:

|-\
| |-\Application
|   |-\Application\Portal
|      |-\Application\Portal\Models
|      |-\Application\Portal\Views
|      |-\Application\Portal\Controllers
|   |-\Application\Portal
|      |-\Application\Admin\Models
|      |-\Application\Admin\Views
|      |-\Application\Admin\Controllers
| |-\vendor
|   |-\vendor\Symfony
|   |-\vendor\Doctrine
|   |-\vendor\Nautilus

Пространства имен структур или библиотек / компонент избегает немногого правило того, чтобы быть начатым с корня управления главным образом вследствие автопогрузчиков, кто почти всегда принимает его во внимание include_path, что должно быть изменено во время выполнения, чтобы включать, среди какой Вы, чтобы нуждаться, этот продавец управления:

set_include_path(
    '.' . PATH_SEPARATOR . realpath( './vendor' )
);

Для конца, местоположения содержания. Как только Вы решаете две проблемы выше, Вы решаете в последний раз, что один также, таким образом, каждый автопогрузчик должен работать от корня управления и поскольку продавец уже делает часть include_path каждым разом Вы instanciar новый класс или импортировать в ресурсе (с использованием), при условии, что этот все еще не был объявлен в цели invocador (препятствие нет никакого вмешательства автопогрузчика), Вы будете всегда «помещаться» в rai\of Применение.

Другими словами, вообразите это Nautilus\Web\Domain нужен некоторый ресурс Nautilus\Web\Service. Даже это abos estiejam в абсолютно отдельных управлениях, оба будут находиться под крыльями того же отца пространства имен, Наутилуса

О! И иметь целью, за исключением модификации include_path, забывают относительно понятия относительных путей.;)

2
ответ дан 22.11.2019, 11:39