Здесь Важно понимать суть шаблона проектирования, получая объект House::getInstance(House::BLUE) либо House::getInstance(House::RED), вы должны программировать на основе интерфейса, либо как в данном случае на основе абстрактных методов, делается это для того, что если у вас возникнет необходимость ввести 10 новых цветов домом, у вас не порушится приложение, так как опять же интерфейс или абстрактный класс обязует реализовать заданные методы
atis //: Так как данный статический метод getInstance возвращает объекты совершенно другого класса, а не свой собственный, то с UML диаграммой никаких проблем не будет, но если Вам режет глаз наименование метода, Вас никто не обязует называть его именно так, можете присвоить произвольное название
atis //: Так это не проблема, так как оба метода абстрактные, будь это абстрактный класс или интерфейс в данном случае нет разницы, так как данные методы всё равно надо будет реализовывать в наследуемых классах
Сергей Беловенцев: Если запросы через актив рекорд делать, то в массиве будут объекты https://github.com/yiisoft/yii2/blob/master/docs/g...
// возвращает всех активных покупателей, сортируя их по идентификаторам
// SELECT * FROM `customer` WHERE `status` = 1 ORDER BY `id`
$customers = Customer::find()
->where(['status' => Customer::STATUS_ACTIVE])
->orderBy('id')
->all();
Если у Вас 3 разных таблицы, по которым нужно сделать выборку, то нужно, составить запросы к каждой таблице, получить массивы моделей, далее все массивы слить в один массив, и скормить его ArrayDataProvider. Также было бы неплохо написать интерфейс, и реализовать его во всех трех моделях, для единства получения данных для вывода. Если речь о фильмах, то можно включить в интерфейс такие методы как getTitle(), getYear(), getPoster() и т.д
погуглите, там не сложно, в вашем случае боди назначаете как флекс контейнер, далее все вложенные дивы как флекс элементы, ну и флекс контейнеру задаёте свойства для отображения внутрених флекс элементов как вам угодно