По этому вопросу очень долго искал ответа))
Вам уже скинули статью по независимым модулям, но этого мало. Что вам нужно:
1.
Независимый слой MODEL.
В этой папке находятся
Use Case (Service), Сама сущность
Entity (AR), Желательно иметь репозитории для изоляции от базы данных ну и другой доменный слой логики, который не зависит ни от чего. Ни от фреймворка, ни от других модулей и пакетов. Ваша задача написать код в этой части так, чтобы его можно было скопировать в любую папку, настроить зависимости и чтобы этот код заработал хоть на чистом PHP. Если не планируете менять фреймворк, то можно зависить от фреймворка.
2.
Зависимости
Все зависимости модуля реализовать либо через Interface либо через события, но события лучше. А дальше уже синхронизируйте через приложение или отдельный модуль. Можно и по api.
3.
UI (пользовательский интерфейс)
Он может быть зависимым от других модулей. В него входят: контроллеры, view, формы, vue.js и так далее. В общем то, с чем взаимодействует пользователь.
Тем самым получается такая система если опираться на
MVC:
VC - могут быть зависимы от других модулей
M - не может быть зависима ни от чего, кроме PHP. Желательно и отделять слой базы данных с помощью Repository. Тогда ваш пакет будет очень сильно независим даже от базы. И вам вообще будет без разницы куда вы это храните в user или employee.
Если будет такой слой, то можно спокойно переносить хоть на будущий
Yii3. Однако На
Yii1 и
Yii2 такое сделать сложно. Надо изворачиваться и займет это больше времени. Так как сам Фреймворк вставляет нам палки и приходится делать костыли из-за его монолитности. К такому подходу не привыкли
Yii1 и
Yii2 разработчики. Обычно на
Yii такое понимание «фигак, фигак и в продакшн».
Такую архитектуру удобно будет строить на
Symfony ну и будущем
Yii3.
Рекомендую к прочтению: