Решение: написать базовый модуль Catalog и на его основе сделать модули Films, Games, Stars...
ну без описания деталей решение мягко скажем... не полное. И ежу понятно что что бы устранить дублирование надо общие вещи вынести куда-то (базовый класс, общая зависимость). Другой вопрос - зачем в отдельные модули, но это может я не вкурсе специфики Yii2. В Symfony2 скажем многие при решении таких задач пихают все в отдельные бандлы и это
не правильно, так как бандлы должны быть
самодостаточными.
Как вы решаете такие проблемы?
Устраняем дублирование. Как - зависит от того где это дублирование проявляет себя. Если у нас много однотипных проверок (например в Yii1 был убогий ACL и я не думаю что что-то поменялось для Yii2) с проверкой ролей, можно вынести эти однотипные проверки в какой-то отдельный объект. Symfony и Spring предлагают подход с voter-ми (шаблон chain of responsibility)
Если речь идет о шаблонах - Twig предоставляет механизм наследования шаблонов, миксины и прочие чудные вещи которые позволяют устранить дублирование вообще полностью.
Если речь идет о банальном дублировании логики - эта логика выносится в отдельный объект. Это может быть как отдельня общая зависимость, либо базовый абстрактный класс (если принцип единой ответственности при этом мы не нарушаем).
Ну и да - логика может так же дублироваться для разных интерфейсов (http, cli, mq). В этом случае опять же "все общее выносится в общую зависимость". То есть логика переносится в сервисный слой.
Вариантов как устранить дублирование масса, но суть у всех вариантов одна - берем общее и выносим в общую зависимость.