Это - проблема проектирования, с которой я регулярно сталкиваюсь, и я хотел бы найти некоторое общее понимание о предмете. Код, предоставленный здесь, является просто примером.
В стадии проектирования легко решить необходимость в объекте:
User
==========
Unique ID
Login name
Password
Full name
И легко преобразовать его в объект базы данных:
CREATE TABLE user (
user_id INT NOT NULL PRIMARY KEY,
username VARCHAR(15) NOT NULL UNIQUE,
password_hash CHAR(32) NOT NULL,
full_name VARCHAR(50)
);
Мои сомнения запускаются на уровне PHP. Очевидное преобразование:
Однако, как я должен заполнить фактические значения?
Я могу сохранить агностика DB класса:
user_id = $user_id;
$this->username = $username;
$this->full_name = $full_name;
}
}
?>
Но затем я должен выполнить запрос где-то в другом месте...
Я могу инкапсулировать его в конструкторе класса:
user_id = $user_id;
$this->username = $res['username'];
$this->full_name = $res['username'];
}
}
?>
Это выглядит изящным, но это препятствует тому, чтобы я делал много материала с классом:
Скорее всего, я должен определить несколько классов, но я не уверен в том, как организовать его. Один базовый класс и много дочерних классов? Независимые классы? Единый класс с определенными методами? Возможно, это - известный шаблон разработки, но мне преподавали процедурное программирование.
Я также ценил бы некоторые идеи о:
==== ДЛЯ ЗАПИСЕЙ ====
Я отметил ответ Gordon, поскольку ответ для него обеспечивает интересное чтение. Безотносительно, стоит отметить, что я нашел очень иллюстративный фрагмент кода в одних из комментариев пользователей на странице Object Serialization руководства PHP, которое может быть получено в итоге следующим образом:
Не будучи гуру ООП, я нашел, что это очень простой все же убирает и полезный. Тексты ООП имеют тенденцию сверхусложнить простые задачи, и моя ежедневная работа состоит главным образом в маленьких проектах.
Это зависит от вашей архитектуры. Четыре общих шаблона архитектуры источников данных можно найти в Мартина Фаулера Шаблоны архитектуры корпоративных приложений :
Объект, который действует как шлюз для таблица базы данных. Один экземпляр обрабатывает все строки в таблице.
Объект, который действует как шлюз для отдельной записи в источнике данных. По одному экземпляру в строке.
Объект, который обертывает строку в таблице или представлении базы данных, инкапсулирует доступ к базе данных и добавляет логику домена к этим данным.
Уровень картографов, который перемещает данные между объектами и базой данных, сохраняя их независимость друг от друга и самого преобразователя.
Дополнительные шаблоны:
Краткое руководство Zend Framework содержит довольно простой для понимания обзор моделей и преобразователей (термины, доступные в Google), вместе с некоторым исходным кодом. .