Несколько приложений MVC, одинаковые модели и базы данных, разные контроллеры, представления и домены - PullRequest
1 голос
/ 23 сентября 2010

Мне поручено перестроить четыре веб-приложения электронного обучения (PHP MVC), которые работают с компаниями и пользователями, которые покупают / продают и взаимодействуют с онлайн-курсами:

  1. Приложение "overlord", в котором создаются учетные записи компаний, отчеты объединяются для всех учетных записей во всех других приложениях и т. Д.
  2. «Корпоративное» приложение, где более крупная организация управляет дочерними компаниями и имеет доступ к сводным отчетам для всех указанных компаний.
  3. Приложение электронной коммерции, в котором компании и частные лица покупают и продают курсы.
  4. «Базовое» приложение, в котором пользователи компании могут взаимодействовать с курсами, созданными или купленными их компанией. Также здесь пользователи и курсы создаются «инструкторами», которые в основном являются пользователями с повышенными правами управления.

Конечно, все эти приложения имеют разные интерфейсы и доступны в разных доменах.

На данный момент приложение 4 завершено.

Моя проблема в том, что предыдущие разработчики дублировали много кода и делили базу данных только между приложениями, что приводило к путанице обслуживания, когда что-то требовалось изменить.

У приложений много общего. Все они имеют дело с одними и теми же курсами, пользователями и компаниями, и, переходя с 4 на 1, каждое приложение в основном получает более полную картину происходящего.

Например, в приложении 4 имеются отчеты о завершении курса и отчеты по электронной коммерции для текущей компании (к которым имеют доступ только некоторые пользователи). Переходя к приложению 2, отчеты для компаний, принадлежащих одному и тому же предприятию, агрегируются, и далее, в приложении 1, представляются отчеты по всем предприятиям и отдельным компаниям. Кроме того, каждый из них обладает уникальным функционалом.

Поэтому мне кажется естественным, что все приложения должны использовать одни и те же модели, и у каждого приложения должны быть свои контроллеры и представления. Мои вопросы:

  1. Каков наилучший способ сделать это технически ?. Приложения находятся на одном сервере, каждое в отдельном каталоге пользователя / home, и действует ограничение open_basedir, при котором каждому приложению разрешено включать файлы только из своего каталога.

  2. Какие последствия для безопасности я должен ослабить ограничения open_basedir и разрешить включение файлов из расположения моделей? Мы являемся владельцем сервера, поэтому внесение любых изменений не является проблемой (хотя запуск Plesk означает, что мы должны выполнять каждую настройку с его интерфейса).

  3. Как я могу настроить домены?

  4. Теперь я "все зависит", но разве это хорошая идея? Я вижу, что существует риск переполнения моделей функциональностью для всех приложений (хотя я обязательно выделю логику приложений, где это необходимо).

1 Ответ

0 голосов
/ 23 сентября 2010

Если приложения находятся на одном сервере. я бы сделал главную учетную запись для одного из этих доменов и оставил бы остальные домены поверх этого. и пусть приложение определит необходимость загрузки приложений на основе домена.

Также вы можете пойти на эту структуру

-- public_html
-----index.php ( main app )
-----/domain2
---------index.php 
-----/domain3
---------index.php 
-----/domain4
---------index.php 

-- application ( folder for common code )
---- models

-- applications ( folder for app. specific code )
---- application1 
------- controllers
------- views

И вы паркуете домены в папках domain1, domain2 и т. Д. ... и в этом индексе вы можете соответственно указать путь к моделям, контроллерам и представлениям. Таким образом, у вас есть способ доступа к приложению с помощью домена (для локального тестирования среды).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...