Danyloff

Шаблон Table Row Gateway с примерами на PHP


  • ·

· ·

Шаблон Table Row Gateway — это один из популярных шаблонов проектирования, который используется для работы с базами данных в объектно-ориентированном программировании. Он представляет собой объект, который представляет отдельную строку в таблице базы данных и обеспечивает доступ к данным этой строки.

Основное отличие Table Row Gateway от Active Record заключается в том, что Table Row Gateway не содержит логики бизнес-логики и не знает о других строках в таблице базы данных. Он предоставляет только доступ к данным конкретной строки.

Пример реализации Table Row Gateway на PHP

class UserGateway {
    private $id;
    private $name;
    private $email;
    private $password;
    private $db;

    public function __construct($id, $db) {
        $this->id = $id;
        $this->db = $db;
        $this->load();
    }

    public function getId() {
        return $this->id;
    }

    public function getName() {
        return $this->name;
    }

    public function getEmail() {
        return $this->email;
    }

    public function getPassword() {
        return $this->password;
    }

    public function setName($name) {
        $this->name = $name;
    }

    public function setEmail($email) {
        $this->email = $email;
    }

    public function setPassword($password) {
        $this->password = $password;
    }

    public function save() {
        $stmt = $this->db->prepare("UPDATE users SET name = ?, email = ?, password = ? WHERE id = ?");
        $stmt->bind_param("sssi", $this->name, $this->email, $this->password, $this->id);
        $stmt->execute();
    }

    private function load() {
        $stmt = $this->db->prepare("SELECT name, email, password FROM users WHERE id = ?");
        $stmt->bind_param("i", $this->id);
        $stmt->execute();
        $stmt->bind_result($name, $email, $password);
        $stmt->fetch();
        $this->name = $name;
        $this->email = $email;
        $this->password = $password;
    }
}

В этом примере класс UserGateway представляет отдельную строку в таблице пользователей базы данных. Он содержит приватные свойства для каждого поля в таблице и методы для доступа к этим полям. Методы save() и load() используются для сохранения и загрузки данных из базы данных.

Пример использования

$db = new mysqli("localhost", "username", "password", "database");
$user = new UserGateway(1, $db);
$user->setName("John Doe");
$user->setEmail("[email protected]");
$user->setPassword("password");
$user->save();

В этом примере мы создаем объект UserGateway для строки с идентификатором 1 в таблице пользователей. Затем мы изменяем имя, адрес электронной почты и пароль пользователя и сохраняем изменения в базе данных.

Заключение

Table Row Gateway — это простой и эффективный шаблон проектирования для работы с базами данных в объектно-ориентированном программировании. Он позволяет легко получать доступ к данным конкретной строки в таблице базы данных и управлять этими данными. Он также обеспечивает четкое разделение между бизнес-логикой и доступом к данным, что делает его более гибким и масштабируемым, чем Active Record.


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