¿Mejor práctica para nombres de variables de módulos personalizados?


8

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_contexty 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_settingsjunto 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!


Además, también me gustaría considerar las actualizaciones en esto (por eso me estoy inclinando hacia una matriz serializada), por lo que hacer cambios en los nombres de las variables no daña los datos y agrega trabajo adicional para la funcionalidad / pruebas de ruta de actualización adicionales
electblake

Respuestas:


7

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


¿Sabe usted / alguien cómo reaccionará este tipo de escenario dentro de Características y / o Strongarm? Odiaría bloquear esos módulos y los usuarios que aprecian la movilidad que pueden aportar esos módulos.
electblake

No veo ninguna razón por la cual las características tengan algún problema con una variable de Drupal que contenga una matriz. Alguien más podría informarle en detalle si es completamente cierto o no.
kiamlaluno

Sí, entiendo que esto puede estar un poco fuera del alcance de esta pregunta, pero quiero asegurarme de que este estándar funcione para todos :) Informaré después de intentar algunas cosas.
electblake

2

Si un conjunto de configuraciones está relacionado, entonces ponerlas en una matriz tiene sentido. Por ejemplo, si estás haciendo several variable_getsecuencialmente. 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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.