spiverg
Новичок
Архитектура и ООП
Правильна ли следующая архитектура с точки зрения ООП:
Есть абстрактный класс ModelUser, через методы которого потомки этого класса, получают данные из источника данных
упрощенно класс выглядит примерно так
И скажем его потомок
Все отлично работает, но я все затачиваю под ООП, и меня смущает следующий момент, в ModelUser мы используем $db, которое инициализируется в дочернем классе, получается так, что методы родительского класса используют свойство, которое определяется в классе-потомке, но с другой стороны ModelUser, является абстрактым классом и напрямую не используется.
Правильна ли следующая архитектура с точки зрения ООП:
Есть абстрактный класс ModelUser, через методы которого потомки этого класса, получают данные из источника данных
упрощенно класс выглядит примерно так
PHP:
abstract class ModelUser {
protected $db = null; // ссылка на объект предоставляющий интерфейс к СУБД
/**
* array getDataUser(int $id)
* возвращает данные пользователя с идентификатором $id
*/
public function getDataUser($id) {
return $this -> db -> queryFetch("SELECT id, name, descr, extract(EPOCH FROM date0) AS datet FROM siteuser WHERE id=?", $id);
}
...далее другие методы к источнику данных в моем случае к СУБД
}
PHP:
class User extends ModelUser {
private $view = null; // ссылка на объект шаблонизатор
/**
* конструктор инициализируем через фабрику нужные звездные классы
*/
public function __construct() {
$this -> factory = Factory :: getInstance();
$this -> view = $this -> factory -> getView(); // getView() создает объект класса View и возвращает ссылку на объект
$this -> db = $this -> factory -> getDB(); // getDB() создает объект класса DB и возвращает ссылку на объект
}
/**
* string showUser(int $id)
* отображение данных пользователя с идентификаторм $id
*/
public function showUser($id) {
$data_user = $this -> getDataUser($id);
... далее используем шаблон и возвращаем результат его работы
}
}
, не надо под него ниче затачивать, это концепция