Метафора для внутренней работы модуля Drupal - PullRequest
13 голосов
/ 24 августа 2009

Какова лучшая метафора рабочего процесса приложения для модуля Drupal? В PHP-фреймворках мы думаем о MVC-стиле. Как мы думаем внутри Drupal?

Asumming Я пишу какой-то ориентированный на пользователя модуль, такой как Магазин, Каталог или Форум. Насколько я понимаю, нет или мало модулей на основе MVC. Должен ли я вообще рассматривать модули Drupal (как подприложение) как ряд экраны, связанные через формы и гиперссылки или есть лучший способ.

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

Ответы [ 4 ]

14 голосов
/ 24 августа 2009

Presentation-abstraction-control (PAC), кажется, наиболее близко соответствует шаблону, описывающему общий подход Drupals, но я думаю, это более или менее случайно;)

Иерархическая организация (более или менее) независимых триплетов PAC может быть грубо сопоставлена ​​с модулями Drupal, которые являются более или менее независимыми агентами под общей крышей и выполняют свою роль во всех трех областях (View, Controller, Model / Abstraction).

Model-view-Presenter также определяет некоторые аспекты, которые можно найти в Drupal, особенно отклонение от MVC в том, что View берет свое содержимое не непосредственно из модели, а из контроллера, поэтому что поток информации строго View<>Controller/Presenter<>Model.

Но разделение интересов в Drupal является (на данный момент) довольно неформальным и во многом зависит от дисциплины разработчиков, поэтому постоянно находится на грани полного разрушения (есть много модулей, в которых много логики темный слой, так что более или менее в поле зрения).

Тем не менее, строгое невыполнение разделения, по-видимому, является одной из причин успеха Drupals, поскольку это позволяет широкому кругу людей с самым разным опытом вносить свой вклад без необходимости обучаться разработчикам. Например, парень HTML / CSS с небольшим знанием PHP может добиться довольно много настроек и дополнительных функциональных возможностей только в рамках своих шаблонов, без необходимости реализации полноценных модулей. Если то, что он сделал, представляет общий интерес, то рано или поздно превратится в более формальную структуру / модуль, когда другие люди его подберут. То же самое касается разработчиков-любителей, начинающих хобби и начинающих - они могут достичь своих целей, даже не понимая, что происходит, поэтому их идеи функциональности добавляются к вкладу и могут быть уточнены, если они отвечают общему интересу.

До сих пор это работало довольно хорошо - ядро ​​Drupal становилось более формальным (или менее scriptish ;) с каждым основным выпуском, сохраняя при этом гибкость для дополнений - давайте посмотрим, будет ли это выдерживать в будущем ...

3 голосов
/ 03 июня 2010

Хуки Drupal называются Listeners, или Observers в большинстве языков OO. Хотя они технически следуют этому шаблону, не ожидайте полировки и зрелости, которые вы найдете в большинстве ОО-языков и сред. Крючки Drupals могут быть чрезвычайно непоследовательными, ограниченными в использовании или слишком широкими в использовании.

Слушатели, хуки, являются основным архитектурным принципом всего в Drupal.

3 голосов
/ 24 августа 2009

Модули в drupal лучше всего рассматривать как набор функций (реализация «ловушек» drupal), которые вызываются, когда в движке происходят определенные «события». Это не только пользовательские события, но также, например, этапы загрузки (перед загрузкой узла, после загрузки узла и т. Д.) Или проверка (механизм проверяет разрешения, хотите ли вы добавить некоторые из них? ).

В действительности, ловушки - это функции, расширяющие функциональность друпалов, поэтому вы добавляете свои собственные поведения к предоставляемым друпал. Затем Drupal будет вызывать эти хуки в соответствующее время, чтобы вы могли выполнять свои действия.

Таким образом, нет тесной связи с формами или страницами, и нет никакого отношения ни к чему, как к модели MVC ... Начиная с версии 6, drupal не основан на объектах.

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

2 голосов
/ 24 августа 2009

Это вопрос высокого уровня, но у меня будет удар.

Drupal - это фреймворк управления контентом, здесь есть хороший обзор .

Drupal базируется на некоторых объектно-ориентированных принципалах . У него есть разделение проблем, очень как MVC. Существует уровень абстракции базы данных , логический уровень и система тем .

При программировании модуля drupal часто рекомендуется использовать один или несколько доступных хуков . Это позволит вам тесно интегрировать ваш код в систему drupal. В ядро ​​ 1018 * встроено множество функциональных возможностей, которые вы можете использовать в своих модулях. Их использование сократит код, который вы должны написать, а также сделает ваш код более дружественным.

...