Bagaimana cara menetapkan variabel untuk variable_get ()?

9

Saya mencoba untuk mengerti variable_get(). Saya membaca sejauh ini sehingga Anda dapat mengatur variabel di settings.php menggunakan $confarray dan mengambilnya nanti dalam kode dengan menggunakan variable_get(). Saya telah membaca bahwa Anda juga dapat menggunakan variable_get()untuk mengambil nilai dari database.

Bagaimana cara kerjanya?
Apakah ada tabel yang dibangun secara otomatis?
Bagaimana Anda mengatur variabel jika fitur ini memungkinkan?

cthrucode
sumber

Jawaban:

25

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 $confvariabel 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 .

marcvangend
sumber
7
Catatan penting lainnya adalah yang 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.
Jimajamma
5

Jika Anda menggunakan Drush (sangat disarankan), Anda dapat mengeluarkan drush vget > variables.txtdari baris perintah untuk membuat file teks dengan daftar semua variabel saat ini dan nilainya. Demikian pula, Anda dapat menggunakan drush vsetuntuk mengubah setel variabel apa pun ke nilai yang berbeda.

Lihat GitHub untuk rincian lebih lanjut tentang variable-get, variable-setdan perintah yang berguna lainnya.

mrP
sumber
3

Untuk mengatur variabel, Anda akan menggunakan variable_set () . Kemudian Anda dapat mengambilnya menggunakan variable_get () . Anda harus terbiasa dengan situs Drupal API.

Variabel, jika disimpan, dapat ditemukan dalam tabel variabel.

Triskelion
sumber
Tidak jelas dari diskusi di atas bagaimana mengatur variabel dalam modul khusus. Jadi Bagaimana mengatur variabel dari modul khusus?
Fawwad