Best Practice für benutzerdefinierte Modulvariablennamen?


8

Ich habe mir angewöhnt, jetzt ziemlich robuste Konfigurationsfenster für meine Module zu erstellen, und ich finde, dass die Variablennamen und die Verwaltung ziemlich schmerzhaft sind .

Ich habe Variablen wie mymodule_section_subvar_varname_type_contextund ich verliere nicht nur den Überblick über die Reihenfolge der Elemente in meinen Variablennamen, sondern ich habe auch das Gefühl, dass ein so langer Variablenname ein Konstruktionsfehler ist.

Ich habe überlegt, ein serialisiertes Array in einer Variablen mymodule_section_settingsin Verbindung mit einer Reihe von Funktionen zu verwenden, die es einfach machen, dieses Array zu verwalten, aber ich würde gerne etwas darüber erfahren, welche (wenn überhaupt) Best Practices außerhalb von Präfixen und / oder etabliert wurden oder Beispiele für Module, denen wir vertrauen, und was sie für große Mengen von Variablen tun.

Vielen Dank!


Außerdem möchte ich auch hier Aktualisierungen in Betracht ziehen (weshalb ich mich zu einem serialisierten Array neige), damit Änderungen an den Variablennamen keine verwaisten Daten verursachen und zusätzliche Arbeit für zusätzliche Upgrade-Pfad-Funktionen / -Tests
hinzufügen

Antworten:


7

Es ist möglich, eine Drupal-Variable zu verwenden, um ein Array zu enthalten. Dies ist auch das, was Drupal-Kernmodule tun (siehe book_type_is_allowed () ).

Es ist möglich, eine einzelne Drupal-Variable zu verwenden, um verschiedene Einstellungen, die von einem Modul verwendet werden, in ein Array aufzunehmen. Mit dem Formularattribut #treeist es weiterhin möglich, system_settings_form () zu verwenden, um das Array in einer Drupal-Variablen zu speichern, ohne zusätzlichen Code zu schreiben. Die Serialisierung der De-Serialisierung des Codes erfolgt automatisch durch die Drupal-Kernfunktionen, die Drupal-Variablen verarbeiten (siehe Code von variable_set () ).

Die Frage ist dann: Wann sollte eine einzelne Drupal-Variable verwendet werden, um unterschiedliche Einstellungen zu enthalten? Ich würde eine einzelne Variable für Einstellungen verwenden, die von einer Funktion oder einer Gruppe von Funktionen verwendet werden. Wenn das Array Werte enthält, die (zum Beispiel) von 10 verschiedenen Funktionen verwendet werden, diese Funktionen jedoch auf einen einzelnen Wert (oder mehrere Werte) von diesem Array zugreifen, würde ich keine einzige persistente Variable für die Einstellungen verwenden.


Wissen Sie / jemand, wie diese Art von Szenario innerhalb von Features und / oder Strongarm reagiert? Ich würde es hassen, diese Module und die Benutzer, die die Mobilität schätzen, die diese Module bieten können, auszusperren.
Electblake

Ich sehe keine Gründe, warum Features Probleme mit einer Drupal-Variablen haben würden, die ein Array enthält. Jemand anderes könnte Sie detailliert melden, ob dies vollständig zutrifft oder nicht.
Kiamlaluno

Ja, ich verstehe, dass dies ein bisschen außerhalb des Rahmens dieser Frage liegt - aber ich möchte sicherstellen, dass dieser Standard für alle funktioniert :) Ich werde berichten, nachdem ich ein paar Dinge ausprobiert habe.
Electblake

2

Wenn eine Reihe von Einstellungen in Beziehung stehen, ist es sinnvoll, sie in ein Array einzufügen. Zum Beispiel, wenn Sie dies several variable_getnacheinander tun . Es gibt Ihnen etwas Flexibilität und ist möglicherweise etwas schneller.

Dies macht es jedoch für andere Programme schwierig, Ihre Einstellungen manuell über Drush Vset oder Strongarm zu bearbeiten. In diesen Fällen können lange Variablennamen tatsächlich hilfreich sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.