Зависит от абстракций, а не от конкрементов - PullRequest
0 голосов
/ 26 августа 2018

Например, я хочу написать свой проект без каких-либо каркасов, но с готовыми библиотеками, чтобы не изобретать велосипед.

Но, конечно, в ходе развития проекта я буду писать свои собственные классы, которые можно было бы удалитьпроекта, например, это будет \Acme\Framework пространство имен.И мои файлы проекта с доменным слоем будут помещены в \Acme\ProjectName пространство имен.

Так что в данный момент я хочу использовать компонент HttpFoundation Symfony для работы со слоем http.И мне нужно ввести класс Request в контроллеры.Но принципы SOLID говорят, что классы должны зависеть от абстракций, а не от конкреций.

Означает ли это, что мне нужно создать класс \Acme\Framework\Request, который зависит от Request Symfony, и использовать его?Или я могу использовать Symfony Request как есть.

А как насчет лучших практик в этом случае?

Извините за мой английский, если вам больно

1 Ответ

0 голосов
/ 26 августа 2018

Это означает, что вам, как правило, нужно зависеть от универсальных интерфейсов.Взяв пример запроса HttpFoundation Request, вы можете обернуть его в PSR-7 адаптер и заставить ваш контроллер принимать Psr\Http\Message\ServerRequestInterface.Теперь он не зависит от специфики HttpFoundation Symfony и способен (с некоторыми дополнительными усилиями, конечно) работать с другими платформами, использующими интерфейсы сообщений PSR HTTP, такими как Zend Expressive (на данный момент их должно быть намного больше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...