@bioforge
Верстающий пыхер

Как спроектировать класс модели для работы с реляционной таблицей?

Добрый день!

Пример класса:

class FirstModel {

    /** @var int */
    private $id;

    /** @var string */
    private $name;

    /** @var string */
    private $created;

    /** @var string */
    private $modified;


    /** @var Type */
    private $type;

    /** @var Settings */
    private $settings;

    /** @var Settings */
    private $order_settings;

    /** @var Currency */
    private $currency;
}

Пример таблицы:

`model_table` (
  `id` int(10) unsigned NOT NULL DEFAULT '0',
  `type_id` smallint(5) unsigned NOT NULL DEFAULT '0',
  `currency_id` smallint(5) unsigned NOT NULL,
  `name` varchar(100) NOT NULL DEFAULT '',
  `settings` text NOT NULL,
  `order_fields` text NOT NULL,
  `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
)


Модель будет обладать свойствами CRUD.

Класс при загрузке из БД должен уметь создавать нужные объекты(Type, Settings, Currency и других), при этом хочется добиться слабой связанности с классами этих объектов.
Будут несколько таких моделей для работы с похожими таблицами. Смущает что инициализация объектов(Type, Settings, Currency и других) может отличаться.

1) Как добиться этого ?
2) Создавать объекты лучше в магических методах когда к ним получают доступ и когда нужно получиться данные в виде объекта или сразу при загрузке данных из БД ?
3) Как сделать класс более универсальным ?
4) Может иду не в ту сторону ?

Готовые скрипты/пакеты использовать не хочется, нужен свой велосипед.
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 1
Alyovkin
@Alyovkin
Full-stack developer
Велосипеды - это плохо. Советую посмотреть реализацию шаблонов Data Mapper и Active Record.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы