Có thể bạn hy vọng biết rằng biến_set là cách kỳ diệu để lưu trữ tất cả các loại dữ liệu có cấu trúc trong cơ sở dữ liệu của bạn và biến_get đó là cách để lấy lại dữ liệu. Thật không may, nó không phải là.
"Các biến liên tục", như chúng thường được gọi, có nghĩa là các cặp giá trị khóa tương đối đơn giản nên tồn tại trên các yêu cầu, người dùng và phiên, thường cho đến khi quản trị viên trang web thay đổi giá trị. Một ví dụ điển hình là tên trang web.
Vì vậy, làm thế nào nó hoạt động?
Khi Drupal được bootstrapping, tất cả các biến được đọc từ bộ đệm (nếu có) hoặc từ bảng biến. (Xem biến_initialize để biết mã chính xác.) Các biến và được lưu trữ trong $conf
biến toàn cục, một mảng rất lớn. Drupal thực hiện điều này bởi vì nó hiệu quả hơn so với thực hiện truy vấn cơ sở dữ liệu mỗi khi cần một biến. (Đó cũng là lý do tại sao biến_set không phù hợp với các đốm dữ liệu lớn: chúng sẽ được tải theo mọi yêu cầu!)
Bất cứ khi nào bạn sử dụng variable_get('variable_name', 'default_value')
, tên biến được tra cứu trong mảng $ conf. Nếu nó tồn tại, giá trị được trả về; khác, giá trị mặc định được trả về.
Cuối cùng, có một thành viên thứ ba trong gia đình: biến_del . Như tên ngụ ý, điều này xóa một biến khỏi bảng biến. Hàm này thường được sử dụng trong triển khai hook_uninstall , xóa các biến khi mô-đun được gỡ cài đặt.
Nếu bạn đang tìm cách lưu trữ các cấu trúc dữ liệu tùy chỉnh phức tạp hơn trong cơ sở dữ liệu, hãy xem hook_schema và drupal_write_record hoặc sử dụng hệ thống thực thể Drupal và API thực thể .
variable_set()
làm cho bộ đệm biến đổi được xây dựng lại, do đó, đây là thứ thường được dành riêng cho dữ liệu khá lâu dài và nhất quán như cài đặt quản trị viên và tương tự. Hoặc, đặt một cách khác, nó không nên được sử dụng thay vì hoặc giống như các biến tĩnh giữa các chức năng thay đổi trong quá trình xây dựng trang.