Prática recomendada para nomes de variáveis ​​de módulos personalizados?

8

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_contexte 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_settingsem 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!

electblake
fonte
Além disso, eu gostaria de considerar as atualizações também (é por isso que estou inclinado a uma matriz serializada), para fazer alterações nos nomes das variáveis ​​não órfãos dos dados e adicionar trabalho extra para funcionalidades / testes adicionais do caminho de atualização
electblake

Respostas:

7

É 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 #treeatributo 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.

kiamlaluno
fonte
Você / alguém sabe como esse tipo de cenário reagirá dentro de Recursos e / ou Strongarm? Eu odiaria bloquear esses módulos e os usuários que apreciam a mobilidade que esses módulos podem trazer.
electblake
Não vejo nenhuma razão para que o Features tenha algum problema com uma variável Drupal que contenha uma matriz. Outra pessoa poderia denunciá-lo em detalhes, se for completamente verdade ou não.
Kiamlaluno
Sim, entendo que isso pode estar um pouco fora do escopo desta pergunta - mas quero garantir que esse padrão funcione para todos :) Vou relatar depois de tentar algumas coisas.
electblake
2

Se um conjunto de configurações estiver relacionado, colocá-las em uma matriz faz sentido. Por exemplo, se você está fazendo several variable_getsequencialmente. 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.

Jeremy French
fonte