HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Работать напрямую с PDO в коде не очень удобно из-за большого количества низкоуровневых деталей и повторяющегося шаблонного кода. Кроме того, нам постоянно приходится преобразовывать данные в одну и в другую сторону.</p>
1 <p>Работать напрямую с PDO в коде не очень удобно из-за большого количества низкоуровневых деталей и повторяющегося шаблонного кода. Кроме того, нам постоянно приходится преобразовывать данные в одну и в другую сторону.</p>
2 <p>Чтобы решить эту проблему, можно скрыть работу с базой за какой-то абстракцией. Один из вариантов такой изоляции называют<strong>DAO</strong>(<em>Data Access Object</em>).</p>
2 <p>Чтобы решить эту проблему, можно скрыть работу с базой за какой-то абстракцией. Один из вариантов такой изоляции называют<strong>DAO</strong>(<em>Data Access Object</em>).</p>
3 <p>Концепция DAO очень проста. Она сводится к созданию класса под каждую таблицу в базе данных. В классе реализуются методы, которые сохраняют, удаляют или ищут сущности в этой таблице. Когда речь идет о пользователях, наш класс DAO может выглядеть так:</p>
3 <p>Концепция DAO очень проста. Она сводится к созданию класса под каждую таблицу в базе данных. В классе реализуются методы, которые сохраняют, удаляют или ищут сущности в этой таблице. Когда речь идет о пользователях, наш класс DAO может выглядеть так:</p>
4 <p>Метод save() в этом классе не только сохраняет данные в базу, но и изменяет переданный объект, устанавливая внутри него идентификатор. Зачем это нужно? Код приложения работает с объектом, а не с базой напрямую. Соответственно, любые изменения в базе должны отражаться на объекте.</p>
4 <p>Метод save() в этом классе не только сохраняет данные в базу, но и изменяет переданный объект, устанавливая внутри него идентификатор. Зачем это нужно? Код приложения работает с объектом, а не с базой напрямую. Соответственно, любые изменения в базе должны отражаться на объекте.</p>
5 <p>Если бы мы не установили идентификатор после сохранения пользователя, то не смогли бы:</p>
5 <p>Если бы мы не установили идентификатор после сохранения пользователя, то не смогли бы:</p>
6 <ul><li>Формировать ссылки - например, ссылку на редактирование пользователя</li>
6 <ul><li>Формировать ссылки - например, ссылку на редактирование пользователя</li>
7 <li>Сравнивать объекты друг с другом</li>
7 <li>Сравнивать объекты друг с другом</li>
8 <li>Отличать существующих пользователей от новых, которых мы еще не сохранили в базу данных</li>
8 <li>Отличать существующих пользователей от новых, которых мы еще не сохранили в базу данных</li>
9 <li>Обеспечить работу кода так, чтобы полноценная версия save() проверяла наличие идентификатора и выполняла обновление данных, если его нет</li>
9 <li>Обеспечить работу кода так, чтобы полноценная версия save() проверяла наличие идентификатора и выполняла обновление данных, если его нет</li>
10 </ul><p>Рассмотрим несколько примеров использования DAO:</p>
10 </ul><p>Рассмотрим несколько примеров использования DAO:</p>
11  
11