PHP: PDO
Теория: Паттерн DAO
Работать напрямую с PDO в коде не очень удобно из-за большого количества низкоуровневых деталей и повторяющегося шаблонного кода. Кроме того, нам постоянно приходится преобразовывать данные в одну и в другую сторону.
Чтобы решить эту проблему, можно скрыть работу с базой за какой-то абстракцией. Один из вариантов такой изоляции называют DAO (Data Access Object).
Концепция DAO очень проста. Она сводится к созданию класса под каждую таблицу в базе данных. В классе реализуются методы, которые сохраняют, удаляют или ищут сущности в этой таблице. Когда речь идет о пользователях, наш класс DAO может выглядеть так:
Метод save() в этом классе не только сохраняет данные в базу, но и изменяет переданный объект, устанавливая внутри него идентификатор. Зачем это нужно? Код приложения работает с объектом, а не с базой напрямую. Соответственно, любые изменения в базе должны отражаться на объекте.
Если бы мы не установили идентификатор после сохранения пользователя, то не смогли бы:
- Формировать ссылки — например, ссылку на редактирование пользователя
- Сравнивать объекты друг с другом
- Отличать существующих пользователей от новых, которых мы еще не сохранили в базу данных
- Обеспечить работу кода так, чтобы полноценная версия
save()проверяла наличие идентификатора и выполняла обновление данных, если его нет
Рассмотрим несколько примеров использования DAO:
.png)

