Всем привет!) У меня проект состоит из нескольких модулей... Не всегда получается модули сделать полностью независимыми. Поэтому приходится прибегать к абстракции вне модуля. Для этого я использую DI контейнер от Yii. В модуле, где есть абстракция делаю интерфейс, а в модуле, который реализует эту абстракцию реализую интерфес. Далее через DI создаю связь, как показано в документации. Всё работает, но у меня создается вопрос правильности...
Например, модуль организаций требует реализовать города для работы со связями, получение название города и так далее. В Bootstrap я прописываю зависимость интерфеса
Код: Выделить всё
$container->setSingleton(CityInterface::class, GeoCity::class);
А в самом модуле GEО, а именно модели
GeoCity реализую этот интерфейс:
Код: Выделить всё
class GeoCity extends \yii\db\ActiveRecord implements CityInterface
{}
Однако я думаю, что это не совсем правильно так делать. Так как интерфейс одного модуля реализуется в другом... Может быть правильней вынести эту реализацию в само приложение? Если да, то куда выносить. Или это нормально, что интерфейс из одного модуля определяется в другом...
Не знаю на сколько понятно описал))