Использование модульной структуры папок? - PullRequest
0 голосов
/ 01 апреля 2012

Я работаю с модульной структурой MVC, вроде как вы можете иметь с Zend (я не использую Zend).Структура каталогов следующая:

/www
  /Config
  /Modules
    /default
      /controllers
        indexController.php
        loginController.php
      /models
      /views
    blog
      /controllers
        indexController.php
      /models
      /views
...

У меня есть несколько вопросов по поводу этой структуры.У меня есть loginController в моей папке по умолчанию.Очевидно, что пользователь заходит на эту страницу для входа в систему.

Зарегистрированный пользователь может затем опубликовать что-то в блоге.Но здесь моя проблема.Как разные модули могут обмениваться данными, например пользовательские данные?

В этом сценарии модуль «по умолчанию» также будет иметь «userModel».Но блог также отображает список «новых пользователей».Так что каким-то образом ему нужен доступ к userModel, который находится внутри модуля «по умолчанию».

И я мог бы придумать еще несколько примеров, когда определенному модулю нужны данные из другого модуля.

Но это означает, что«модуль» почти всегда зависит от другого модуля.Вот почему я не вижу никакой пользы в этой структуре.Или я тут что-то не так делаю .. ??

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

Я бы на самом деле переосмыслил, что именно вы положили в модули.

Структуры из слоя Model должны быть разделены между различными модулями (также .. ваше соглашение об именах - отстой: модули, модели, модели, модули, модели модулей .. сбивает с толку) . Модули предназначены для упаковки части, связанной с взаимодействием.

Когда вы работаете с доменным бизнес-объектом, представляющим «статью», логика не волшебным образом меняется от модуля к модулю. Вместо этого есть только пределы того, что каждый пользователь может делать с ним. В зависимости от того, авторизован ли пользователь выполнять какую-либо команду или нет.

Вы могли бы извлечь пользу из прочтения этой SO темы .., в то время как больше внимания уделяется авторизации на уровне контроллера, те же идеи можно применить к объектам домена.

Кроме того, вы должны внимательно прочитать статью М. Фаулера о Архитектура GUI .

0 голосов
/ 01 апреля 2012

Кажется, что «модульный» подход здесь не подходит.В MVC у вас есть только три объекта: Model View и Controller.

Контроллеры могут загружать любую модель, например, как вы упомянули: для post_controller требуются модели post и user так пусть будет так.Поскольку модели представляют данные, неправильно, чтобы две пользовательские модели делали одно и то же.

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

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