ОО и написание модулей Drupal - PullRequest
2 голосов
/ 18 мая 2010

Предисловие: Да, я прочитал: http://drupal.org/node/547518

Я пишу модуль 'foo' для Drupal6, где я организую код в ОО-стиле.

Есть класс с именем Foo, в котором есть множество сеттеров и аксессоров, и он довольно хорошо работает для абстрагирования довольно неприятного кода и SQL.

Вопрос в том, является ли общепринятой практикой выставлять класс для других модулей или лучше обернуть вещи в более типичную функцию foo_myfnname ()?

Например, если я пишу документы модуля, я должен сказать людям сделать это:

$foo = new Foo();
$something = $foo->get_something();

или попросите их позвонить:

foo_get_something();

что под капотом делает:

function foo_get_something() {
  $foo = new Foo();
  return $foo->get_something();
}

1 Ответ

4 голосов
/ 19 мая 2010

Трудно сказать, и я не думаю, что есть что-то вроде "обычной практики" для этого. Взяв в качестве примера модуль вездесущих представлений, мы советуем обернуть общие вызовы API в «стандартные» функции и оставить использование объекта (объектов) только для продвинутых вещей.

Лично я бы основывал решение на предполагаемой аудитории API. Если вы обращаетесь к «широкой» базе пользователей Drupal, то заставлять их использовать классы, вероятно (к сожалению / досадно), все еще немного растягивается, так как многие пользователи PHP с неполным рабочим днем ​​не будут иметь надлежащего понятия ООП (черт, даже «профессионал») Разработчики PHP часто не имеют его).

Если, с другой стороны, ваша целевая аудитория состоит только из разработчиков, обеспечение правильного ОО-слоя «как есть» должно быть в порядке и, вероятно, менее запутанным, чем смесь, которая получается в противном случае (используя представления в качестве примера снова, я часто начинал используя одну из удобных функций-оберток, и позже я переписал довольно немного кода только потому, что мне нужно было это крошечное небольшое изменение, которое требовало прямого использования объекта - лучше быть последовательным и использовать объекты с самого начала).

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