У меня появилась привычка создавать довольно надежные панели конфигурации для моих модулей, и я считаю, что имена переменных и управление ими - довольно трудная задача .
У меня есть переменные типа, mymodule_section_subvar_varname_type_context
и я не только теряю порядок элементов в именах моих переменных, но я чувствую, что наличие имени переменной, которое является длинным, является недостатком дизайна.
Я рассматривал возможность использования сериализованного массива в переменной mymodule_section_settings
в сочетании с набором функций, которые облегчают поддержку этого массива, но я хотел бы получить некоторую информацию о том, какие (если таковые имеются) лучшие практики были установлены вне префиксов и / или примеры модулей, которым мы доверяем и что они делают для больших наборов переменных.
Спасибо!
источник
Ответы:
Можно использовать переменную Drupal для хранения массива; это то, что делают основные модули Drupal (см. book_type_is_allowed () ).
Можно использовать одну переменную Drupal для хранения различных настроек, используемых модулем в массиве. С
#tree
атрибутом формы все еще возможно использовать system_settings_form () для сохранения массива в переменную Drupal без написания дополнительного кода. Сериализация десериализации кода выполняется автоматически основными функциями Drupal, которые обрабатывают переменные Drupal (см. Код variable_set () ).Тогда возникает вопрос: когда следует использовать одну переменную Drupal для разных настроек? Я бы использовал одну переменную для настроек, которые используются функцией или группой функций; если массив содержит значения, используемые (например) 10 различными функциями, но эти функции обращаются к одному значению (или нескольким значениям) из этого массива, то я не буду использовать одну постоянную переменную для настроек.
источник
Если набор настроек связан, то их размещение в массиве имеет смысл. Например, если вы делаете
several variable_get
это последовательно. Это дает вам некоторую гибкость, а также может быть немного быстрее.Однако это затруднит для других программ редактирование ваших настроек вручную с помощью чего-то вроде drush vset или strongarm. В этих случаях длинные имена переменных могут быть полезны.
источник