Adquiri o hábito de criar painéis de configuração bastante robustos para meus módulos agora e estou achando os nomes e gerenciamento de variáveis bastante problemáticos .
Eu tenho variáveis como mymodule_section_subvar_varname_type_context
e eu não apenas perdi o controle da ordem dos elementos em meus nomes de variáveis, mas também sinto que ter um nome de variável tão longo é uma falha de design.
Eu estive pensando em usar uma matriz serializada em uma variável mymodule_section_settings
em conjunto com um conjunto de funções que facilitam a manutenção dessa matriz, mas eu gostaria de receber algumas sugestões sobre quais (se houver) melhores práticas foram estabelecidas fora dos prefixos e / ou exemplos de módulos nos quais confiamos e o que eles estão fazendo para grandes conjuntos de variáveis.
Obrigado!
fonte
Respostas:
É possível usar uma variável Drupal para conter uma matriz; é isso que os módulos principais do Drupal também fazem (consulte book_type_is_allowed () ).
É possível usar uma única variável Drupal para conter diferentes configurações usadas por um módulo em uma matriz. Com o
#tree
atributo form ainda é possível usar system_settings_form () para salvar a matriz em uma variável Drupal sem escrever nenhum código adicional. A serialização da desserialização do código é feita automaticamente pelas funções principais do Drupal que lidam com variáveis do Drupal (consulte o código de variable_set () ).A questão é: quando uma única variável Drupal deve ser usada para conter configurações diferentes? Eu usaria uma única variável para configurações usadas por uma função ou um grupo de funções; se a matriz contiver valores usados por (por exemplo) 10 funções diferentes, mas essas funções acessarem um único valor (ou alguns valores) dessa matriz, então eu não usaria uma única variável persistente para as configurações.
fonte
Se um conjunto de configurações estiver relacionado, colocá-las em uma matriz faz sentido. Por exemplo, se você está fazendo
several variable_get
sequencialmente. Dá a você alguma flexibilidade, além de ser potencialmente um pouco mais rápido.No entanto, isso tornará difícil para outros programas editar suas configurações manualmente através de algo como drush vset ou strongarm. Nesses casos, nomes longos de variáveis podem realmente ser úteis.
fonte