Mungkin Anda berharap mengetahui bahwa variable_set adalah cara ajaib untuk menyimpan semua jenis data terstruktur dalam database Anda, dan variable_get adalah cara untuk mengeluarkannya kembali. Sayangnya tidak.
"Variabel persisten", sebagaimana sering disebut, dimaksudkan untuk pasangan nilai kunci yang relatif sederhana yang harus bertahan di seluruh permintaan, pengguna, dan sesi, seringkali hingga admin situs mengubah nilainya. Contoh yang baik adalah nama situs.
Jadi bagaimana cara kerjanya?
Ketika Drupal di-bootstrap, semua variabel dibaca dari cache (jika tersedia) atau dari tabel variabel. (Lihat variable_initialize untuk kode yang tepat.) Variabel dan disimpan dalam $conf
variabel global , array yang sangat besar. Drupal melakukan ini karena lebih efisien daripada melakukan kueri basis data setiap kali diperlukan suatu variabel. (Itu juga alasan mengapa variable_set tidak cocok untuk gumpalan data yang besar: mereka akan dimuat pada setiap permintaan!)
Setiap kali Anda menggunakan variable_get('variable_name', 'default_value')
, nama variabel dicari dalam array $ conf. Jika ada, nilainya dikembalikan; selain itu, nilai default dikembalikan.
Akhirnya, ada anggota keluarga ketiga: variable_del . Seperti namanya, ini menghapus variabel dari tabel variabel. Fungsi ini sering digunakan dalam implementasi hook_uninstall , menghapus variabel ketika modul dihapus.
Jika Anda mencari cara untuk menyimpan struktur data khusus yang lebih kompleks dalam database, periksa hook_schema dan drupal_write_record , atau gunakan sistem entitas Drupal dan API Entitas .
variable_set()
menyebabkan cache variabel dibangun kembali, jadi itu adalah sesuatu yang biasanya disediakan untuk data yang cukup tahan lama dan konsisten seperti pengaturan admin dan sejenisnya. Atau, dengan kata lain, itu tidak boleh digunakan sebagai ganti atau seperti variabel statis antara fungsi yang berubah selama pembuatan halaman.