J'ai pris l'habitude de faire des volets de configuration assez robustes pour mes modules maintenant, et je trouve que les noms et la gestion des variables sont assez pénibles .
J'ai des variables comme mymodule_section_subvar_varname_type_context
et non seulement je perds la trace de l'ordre des éléments dans mes noms de variables, mais j'ai l'impression que d'avoir un nom de variable aussi long est un défaut de conception.
J'ai envisagé d'utiliser un tableau sérialisé dans une variable mymodule_section_settings
en conjonction avec un ensemble de fonctions qui facilitent la maintenance de ce tableau, mais j'aimerais avoir des informations sur les meilleures pratiques (le cas échéant) qui ont été établies en dehors des préfixes et / ou des exemples de modules auxquels nous faisons confiance et ce qu'ils font pour de grands ensembles de variables.
Merci!
la source
Réponses:
Il est possible d'utiliser une variable Drupal pour contenir un tableau; c'est aussi ce que font les modules de base de Drupal (voir book_type_is_allowed () ).
Il est possible d'utiliser une seule variable Drupal pour contenir différents paramètres utilisés par un module dans un tableau. Avec l'
#tree
attribut form, il est toujours possible d'utiliser system_settings_form () pour enregistrer le tableau dans une variable Drupal sans écrire de code supplémentaire. La sérialisation de la dé-sérialisation du code est automatiquement effectuée par les fonctions centrales Drupal qui gèrent les variables Drupal (voir le code de variable_set () ).La question est alors: quand doit-on utiliser une seule variable Drupal pour contenir différents paramètres? J'utiliserais une seule variable pour les paramètres utilisés par une fonction ou un groupe de fonctions; si le tableau contient des valeurs utilisées par (par exemple) 10 fonctions différentes, mais que ces fonctions accèdent à une seule valeur (ou quelques valeurs) à partir de ce tableau, alors je n'utiliserais pas une seule variable persistante pour les paramètres.
la source
Si un ensemble de paramètres est lié, il est logique de les placer dans un tableau. Par exemple, si vous procédez
several variable_get
de manière séquentielle. Cela vous donne une certaine flexibilité tout en étant potentiellement un peu plus rapide.Cependant, cela rendra difficile pour les autres programmes de modifier vos paramètres manuellement via quelque chose comme drush vset ou strongarm. Dans ces cas, les noms de variables longs peuvent être utiles.
la source