Я начинающий разработчик laravel, и я пытаюсь понять, как здесь работает пространство имен. Поэтому я узнал о шаблоне репозитория и решил продолжить его и реализовать в своем проекте.Как межстрочный интервал работает с использованием PSR4 в laravel 5?
Так что я создал папку с именем archive
, а затем загружают его с помощью PSR4 в моем файле composer.json так:
"Archive\\": "archive/"
Теперь я создал папку Repositories
в моей archive
папке, где я буду создавать все хранилища. И я именую файлы в нем так:
namespace Archive\Repositories;
Который, кажется, работает нормально. Затем я создал папку Contracts
внутри папки Repositories
, которая будет содержать все интерфейсы для реализаций, которые я собираюсь использовать, например, UserRepositoryInterface
. И я размещаю файлы имен в папке «Контракты» следующим образом:
namespace Archive\Repositories\Contracts;
Это тоже нормально работает.
Теперь мое сомнение кроется в конкретных реализациях, которые я пытаюсь сделать в папке Repositories
. Например, есть DbUserRepository
, который реализует команду «UserRepositoryInterface
» в папке «Контракты».
Теперь, так как я новичок в этом я попробовал:
class DbUserRepository implements Contacts\UserRepositoryInterface
И это прекрасно работает, но тогда я думал, что я должен use
его на верхней части файла следующим образом:
use Contacts\UserRepositoryInterface;
И Я мог бы просто сделать это:
class DbUserRepository implements UserRepositoryInterface
И он должен работать нормально в соответствии со мной, но он дает мне класс не для и исключение, но когда я делаю что-то вроде:
use Archive\Repositories\Contacts\UserRepositoryInterface;
Теперь он отлично работает. Но вот где я расплывчатый. Внутри DbUserRepository
Я уже нахожусь в наместничестве Archive\Repositories
, так почему же он просто не заглядывает в папку Контрактов? Почему мне нужно указать полное это как use Archive\Repositories\Contacts\UserRepositoryInterface;
Почему я не могу просто сказать:
use Contacts\UserRepositoryInterface;
Я надеюсь, что мой вопрос не слишком запутанным. Хотя мой код работает сейчас, но я расплывчатый, как работает пространство имен.