Мне поручено перестроить четыре веб-приложения электронного обучения (PHP MVC), которые работают с компаниями и пользователями, которые покупают / продают и взаимодействуют с онлайн-курсами:
- Приложение "overlord", в котором создаются учетные записи компаний, отчеты объединяются для всех учетных записей во всех других приложениях и т. Д.
- «Корпоративное» приложение, где более крупная организация управляет дочерними компаниями и имеет доступ к сводным отчетам для всех указанных компаний.
- Приложение электронной коммерции, в котором компании и частные лица покупают и продают курсы.
- «Базовое» приложение, в котором пользователи компании могут взаимодействовать с курсами, созданными или купленными их компанией. Также здесь пользователи и курсы создаются «инструкторами», которые в основном являются пользователями с повышенными правами управления.
Конечно, все эти приложения имеют разные интерфейсы и доступны в разных доменах.
На данный момент приложение 4 завершено.
Моя проблема в том, что предыдущие разработчики дублировали много кода и делили базу данных только между приложениями, что приводило к путанице обслуживания, когда что-то требовалось изменить.
У приложений много общего. Все они имеют дело с одними и теми же курсами, пользователями и компаниями, и, переходя с 4 на 1, каждое приложение в основном получает более полную картину происходящего.
Например, в приложении 4 имеются отчеты о завершении курса и отчеты по электронной коммерции для текущей компании (к которым имеют доступ только некоторые пользователи). Переходя к приложению 2, отчеты для компаний, принадлежащих одному и тому же предприятию, агрегируются, и далее, в приложении 1, представляются отчеты по всем предприятиям и отдельным компаниям. Кроме того, каждый из них обладает уникальным функционалом.
Поэтому мне кажется естественным, что все приложения должны использовать одни и те же модели, и у каждого приложения должны быть свои контроллеры и представления. Мои вопросы:
Каков наилучший способ сделать это технически ?. Приложения находятся на одном сервере, каждое в отдельном каталоге пользователя / home, и действует ограничение open_basedir, при котором каждому приложению разрешено включать файлы только из своего каталога.
Какие последствия для безопасности я должен ослабить ограничения open_basedir и разрешить включение файлов из расположения моделей? Мы являемся владельцем сервера, поэтому внесение любых изменений не является проблемой (хотя запуск Plesk означает, что мы должны выполнять каждую настройку с его интерфейса).
Как я могу настроить домены?
Теперь я "все зависит", но разве это хорошая идея? Я вижу, что существует риск переполнения моделей функциональностью для всех приложений (хотя я обязательно выделю логику приложений, где это необходимо).