TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #5612 2.6K
Repository Pattern в PHP

Сегодня мы узнаем про шаблон проектирования «Репозиторий» («Repository Pattern»), его особенности и сферы применения, а также сравнение его с другими подходами к доступу к данным, такими как ORM (Object-Relational Mapping).

Шаблон «Репозиторий» представляет собой абстракцию источника данных, который ведет себя как коллекция, содержащая объекты доменной модели. Эта абстракция представлена интерфейсом Repository и обычно содержит методы для получения, сохранения и удаления объектов.

Репозиторий считается единственным источником правды для извлечения и сохранения объектов доменной модели.

❌ Чем Репозиторий НЕ является?

🏭 Не является фабрикой, так как не создает объекты, а только содержит их.
🗄️ Не ORM, не зависит от способа получения объектов (через базу данных, файлы и т. д.).

🖋️ Различия между Репозиториями для Чтения и Записи:

✍️ Репозитории для записи используются для сохранения, обновления и удаления объектов.
📖 Репозитории для чтения предоставляют контекстно-специфичные модели объектов для целей чтения.

Другие аспекты включают в себя соглашения по именованию методов (например, get vs. find), использование ViewModel для представления объектов в различных контекстах, а также возможность замены технической реализации репозитория, например, для доступа к данным через внешние сервисы.

🤔 Когда НЕ использовать Репозиторий?

🚫 Для небольших CRUD-приложений.
🚫 Для создания больших отчетов.

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

👉 Читать полностью
  • 🤔 10
  • 👍 1
More from @phpproglib
  1. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  2. Sep 30, 2026🐸 Библиотека пхпшника
  3. Sep 29, 2026💡 Laravel-фича, которая спасает тесты от случайных запросов Http::preventStrayRequests()…
  4. Sep 28, 2026🔐 ramsey/uuid — UUID без самописного кода Библиотека помогает генерировать, парсить и вал…
  5. Sep 28, 2026🤔 Что выведет код? ❤️ — 1 🔥 — 2 👍 — 12 👾 — Fatal error 👇 Правильный ответ (нажми, что…
  6. Sep 25, 2026🌞 PHP умеет искать в массиве без foreach В PHP 8.4 появились array_find(), array_find_key…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →