Me he acostumbrado a hacer paneles de configuración bastante robustos para mis módulos ahora, y encuentro que los nombres y la gestión de las variables son bastante difíciles .
Tengo variables como mymodule_section_subvar_varname_type_context
y no solo pierdo el rastro del orden de los elementos en mis nombres de variables, sino que siento que tener un nombre de variable tan largo es un defecto de diseño.
He estado considerando el uso de una matriz serializada en una variable mymodule_section_settings
junto con un conjunto de funciones que facilitan el mantenimiento de esa matriz, pero me encantaría recibir información sobre cuáles (si las hay) mejores prácticas se han establecido fuera de los prefijos y / o ejemplos de módulos en los que confiamos y lo que están haciendo para grandes conjuntos de variables.
¡Gracias!
fuente
Respuestas:
Es posible usar una variable Drupal para contener una matriz; eso es lo que hacen los módulos principales de Drupal también (ver book_type_is_allowed () ).
Es posible utilizar una sola variable de Drupal para contener diferentes configuraciones utilizadas por un módulo en una matriz. Con el
#tree
atributo form aún es posible usar system_settings_form () para guardar la matriz en una variable de Drupal sin escribir ningún código adicional. La serialización de la deserialización del código se realiza automáticamente mediante las funciones centrales de Drupal que manejan las variables de Drupal (consulte el código de variable_set () ).La pregunta es entonces: ¿cuándo debería usarse una sola variable de Drupal para contener diferentes configuraciones? Usaría una sola variable para las configuraciones que usa una función o un grupo de funciones; si la matriz contiene valores utilizados por (por ejemplo) 10 funciones diferentes, pero esas funciones acceden a un solo valor (o un par de valores) de esa matriz, entonces no usaría una sola variable persistente para la configuración.
fuente
Si un conjunto de configuraciones está relacionado, entonces ponerlas en una matriz tiene sentido. Por ejemplo, si estás haciendo
several variable_get
secuencialmente. Le brinda cierta flexibilidad, además de ser potencialmente un poco más rápido.Sin embargo, esto dificultará que otros programas editen su configuración manualmente a través de algo como drush vset o strongarm. En estos casos, los nombres largos de variables pueden ser útiles.
fuente