Задача такая
- есть общие категории товаров
- есть торговые центры у которых есть категории
- есть категории витрин
модели (такие как страницы и категории) для всех этих объектов разные но по сути копипаст
У торговых центров есть
- страницы
- категории
далее у витрин есть
- товары
- страницы
- категории
К примеру, класс StoreModel с множеством методов для реализации вышеописанного (нарушение паттернов и все такое) - получилось не красиво. Решил разнести все методы по своему назначению для этого использовал trait - с виду ничего так, простенько но все работает как надо))
class StoresModel extends Core
{
use store\storeBase, // класс с общим назначением
store\storeCategories, // класс категорий
store\storePages; // класс страниц
}
trait storeBase
{
....
}
trait storeCategories
{
....
}
... и прочие
Потом подумал - Категории и страницы у всех объектов имеют схожую функциональность, почему бы не вынести функциональность категорий в отдельный класс и унаследовать его в нужном месте. Но вот тут и возник вопрос КАК?
получается что
trait storeCategories
{
....
}
должен получить методы от общего класса Categories