Danyloff

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 может быть реализован с помощью классов, которые предоставляют методы для работы с данными. Это позволяет легко заменять и изменять источники данных без изменения бизнес-логики.


Так же интересно

Value Object по Эвансу

Value Object - это один из ключевых концептов в DDD, который представляет собой объект, который описывает некоторое значение или состояние, но не имеет...