Data Access Object (DAO) с примерами на PHP
- ·
-
Data Access Object (DAO) — это шаблон проектирования, который используется для разделения бизнес-логики и доступа к данным. DAO предоставляет единый интерфейс для работы с данными, скрывая детали их хранения и доступа к ним. Это позволяет легко заменять и изменять источники данных без изменения бизнес-логики.
В PHP DAO может быть реализован с помощью классов, которые предоставляют методы для работы с данными. Рассмотрим пример на PHP, где мы создадим DAO для работы с таблицей пользователей в базе данных.
class UserDAO {
private $db;
public function __construct(PDO $db) {
$this->db = $db;
}
public function getAllUsers() {
$stmt = $this->db->query('SELECT * FROM users');
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function getUserById($id) {
$stmt = $this->db->prepare('SELECT * FROM users WHERE id = :id');
$stmt->bindParam(':id', $id);
$stmt->execute();
return $stmt->fetch(PDO::FETCH_ASSOC);
}
public function addUser($user) {
$stmt = $this->db->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
$stmt->bindParam(':name', $user['name']);
$stmt->bindParam(':email', $user['email']);
$stmt->execute();
return $this->db->lastInsertId();
}
public function updateUser($id, $user) {
$stmt = $this->db->prepare('UPDATE users SET name = :name, email = :email WHERE id = :id');
$stmt->bindParam(':id', $id);
$stmt->bindParam(':name', $user['name']);
$stmt->bindParam(':email', $user['email']);
$stmt->execute();
}
public function deleteUser($id) {
$stmt = $this->db->prepare('DELETE FROM users WHERE id = :id');
$stmt->bindParam(':id', $id);
$stmt->execute();
}
}
В этом примере мы создали класс UserDAO, который предоставляет методы для работы с таблицей пользователей в базе данных. Конструктор класса принимает объект PDO, который используется для выполнения запросов к базе данных.
Метод getAllUsers() возвращает все записи из таблицы пользователей. Метод getUserById($id) возвращает запись с указанным идентификатором. Метод addUser($user) добавляет новую запись в таблицу пользователей и возвращает идентификатор новой записи. Метод updateUser($id, $user) обновляет запись с указанным идентификатором. Метод deleteUser($id) удаляет запись с указанным идентификатором.
Теперь мы можем использовать этот класс для работы с данными в нашем приложении. Например, мы можем получить всех пользователей и вывести их на экран
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$userDAO = new UserDAO($db);
$users = $userDAO->getAllUsers();
foreach ($users as $user) {
echo $user['name'] . ' (' . $user['email'] . ')' . "n";
}
В этом примере мы создали объект UserDAO, передав ему объект PDO для работы с базой данных. Затем мы вызвали метод getAllUsers() для получения всех пользователей и вывели их на экран.
DAO может быть использован для работы с любыми источниками данных, такими как базы данных, файлы или веб-сервисы. Это позволяет легко заменять и изменять источники данных без изменения бизнес-логики.
Заключение
DAO является важным шаблоном проектирования, который помогает разделить бизнес-логику и доступ к данным. В PHP DAO может быть реализован с помощью классов, которые предоставляют методы для работы с данными. Это позволяет легко заменять и изменять источники данных без изменения бизнес-логики.