Vielleicht hoffen Sie zu erfahren, dass variable_set der magische Weg ist, alle Arten von strukturierten Daten in Ihrer Datenbank zu speichern, und dass variable_get der Weg ist, sie wieder herauszuholen. Leider ist es nicht.
Die "persistenten Variablen", wie sie häufig genannt werden, sind für relativ einfache Schlüssel-Wert-Paare gedacht, die über Anforderungen, Benutzer und Sitzungen hinweg bestehen bleiben sollen, häufig bis ein Site-Administrator den Wert ändert. Ein gutes Beispiel ist der Site-Name.
Wie funktioniert es?
Wenn Drupal gebootet wird, werden alle Variablen aus dem Cache (falls verfügbar) oder aus der Variablentabelle gelesen. ( Den genauen Code finden Sie unter variable_initialize .) Die Variablen und in der globalen $conf
Variablen gespeichert , ein riesiges Array. Drupal tut dies, weil es effizienter ist, als jedes Mal, wenn eine Variable benötigt wird, eine Datenbankabfrage durchzuführen. (Dies ist auch der Grund, warum variable_set nicht für große Datenmengen geeignet ist: Sie werden bei jeder Anforderung geladen!)
Bei jeder Verwendung variable_get('variable_name', 'default_value')
wird der Variablenname im Array $ conf nachgeschlagen. Wenn es existiert, wird der Wert zurückgegeben; Andernfalls wird der Standardwert zurückgegeben.
Schließlich gibt es noch ein drittes Familienmitglied: variable_del . Wie der Name schon sagt, wird dadurch eine Variable aus der Variablentabelle gelöscht. Diese Funktion wird häufig in hook_uninstall- Implementierungen verwendet und löscht Variablen, wenn ein Modul deinstalliert wird.
Wenn Sie nach Möglichkeiten suchen, komplexere benutzerdefinierte Datenstrukturen in der Datenbank zu speichern, überprüfen Sie hook_schema und drupal_write_record oder verwenden Sie das Drupal-Entitätssystem und die Entitäts-API .
variable_set()
dass der variable Cache neu erstellt wird. Daher ist er normalerweise für Daten reserviert, die ziemlich langlebig und konsistent sind, wie z. B. Administratoreinstellungen und dergleichen. Oder anders ausgedrückt, es sollte nicht anstelle oder wie statische Variablen zwischen Funktionen verwendet werden, die sich während des Seitenaufbaus ändern.