Добрый день.
Как вы проектируете свои модели для бэкенд, фронтенд и других, например, апи модулей?
Опишу свои затруднения на примере модели ТОВАР.
С одной стороны, есть большое кол-во общих методов для классов Product во всех модулях, например:
public function getPrice() {
return format($this->price);
}
Логичным кажется вынос общих методов в CommonProduct и далее все товарам наследоваться от него.. SiteProduct, AdminProduct, ApiProduct...
С другой стороны, хочется, использовать свой класс ActiveRecord в каждом модуле (AdminActiveRecord, ProductActiveRecord, ApiActiveRecord..)
Например, один раз для фронтенда в SiteActiveRecord прописать defaultScopes для вывода только опубликованных данных и радоваться что условие подтянулось ко всем запросам в десятке классов.
public function defaultScope()
{
return [
'condition'=>'active=1,
];
}
Хочу разобраться какой подход наиболее верный
PS. Всем кто откликнулся на проблему плюс в карму) отметил ваши сообщения решением