Я следую учебнику, который, как мне кажется, написан кем-то, кто не знает, что он делает (уже поймал 2 очевидных ошибки, а остальная часть кода беспорядочна). Но я не хочу полностью дискредитировать парня, поэтому я спрашиваю здесь о чем-то еще, что я не понимаю.
Прежде всего, я пришлю 100 пунктов пирожных, мои 2 домашних животных и коробка шоколада кто может объяснить мне, что с этим кодом.
Он использует модульную архитектуру. Имя модуля frontmodule
. Модуль имеет MVC. И модуль имеет внутренний library
собственный.
/modules/
/frontmodule/
/models/
/views/
/controllers/ -- the /module controller is here (undestandable)
/library/
/Controller/ -- the /module/library controller is here (why?!)
/Action/
Сначала появляется запутанная часть. Почему каждый модуль имеет внутреннюю библиотеку и почему эта библиотека intenal имеет свои собственные controllers
и actions
. Это лучшая практика? Я думаю, что эту библиотеку можно перенести в плагин, который может использовать модуль. Не уверен.
Теперь появляется интересная часть.... помимо каждого модуля, имеющего собственную внутреннюю библиотеку, есть также общая библиотека, доступная для всех модулей (см. ниже на том же уровне папки, что и /modules
), и что Common Library также имеет свои собственные контроллеры и действия (так же, как каждая внутренняя библиотека имеет свои собственные контроллеры и действия)
/modules
/library/
/Common/
/Controller/ -- the /common/library controller is here (why?!)
/Action/
/Helper/
/Plugin/
Итак, у нас есть 3 контроллера:
- контроллер модуля
- внутренний контроллер библиотеки
- общий контроллер библиотеки
Теперь здесь безумная часть, которая, я думаю, слишком усложняет жизнь
Он говорит: контроллер модуля расширяет родительский контроллер библиотеки модулей который также расширяет общую библиотеку контроллер.
class IndexController
extends Frontoffice_Library_Controller_Action_Abstract { ... }
abstract class Frontoffice_Library_Controller_Action_Abstract
extends Custom_Controller_Action_Abstract { ... }
Итак, я думаю:
- контроллер модуля =
IndexController
- контроллер внутренней библиотеки модуля =
Frontoffice_Library_Controller_Action_Abstract
- общий контроллер библиотеки =
Custom_Controller_Action_Abstract
где module controller
продолжается module internal library controller
и module internal library controller
продолжается common library controller
Кто-нибудь видел что-нибудь подобное раньше? Я предполагаю, что этот код будет непросто поддерживать, но, возможно, те, кто больше опытен с zend, могут сказать мне, чего этот парень пытается достичь. Структура приложения немного запутанна. Я считаю, что он злоупотребляет MVC вместо того, чтобы использовать его для упрощения приложения и его ремонтопригодности.