Добрый день!
Пример класса:
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) Может иду не в ту сторону ?
Готовые скрипты/пакеты использовать не хочется, нужен свой велосипед.