Answers:
也许您希望了解,variable_set是在数据库中存储各种结构化数据的神奇方法,而variable_get是再次将其取出的方法。不幸的是,事实并非如此。
“持久变量”(通常被称为“持久变量”)是指相对简单的键值对,它们应在请求,用户和会话之间持久存在,直到站点管理员更改该值为止。站点名称就是一个很好的例子。
那么它是怎样工作的?
自举Drupal时,将从高速缓存(如果有)或变量表中读取所有变量。(有关确切的代码,请参见variable_initialize。)变量并存储在全局$conf
变量(一个巨大的数组)中。Drupal之所以这样做,是因为它比每次需要一个变量时进行数据库查询都更为有效。(这也是variable_set不适合大型数据块的原因:它们会在每次请求时加载!)
每当使用时variable_get('variable_name', 'default_value')
,都会在$ conf数组中查找变量名。如果存在,则返回该值。否则,返回默认值。
最后,该家族的第三个成员是variable_del。顾名思义,这将从变量表中删除变量。该函数通常在hook_uninstall实现中使用,在卸载模块时删除变量。
如果您正在寻找在数据库中存储更复杂的自定义数据结构的方法,请查看hook_schema和drupal_write_record,或使用Drupal实体系统和Entity API。
要设置变量,可以使用variable_set()。然后,您可以使用variable_get()检索它们。您应该熟悉Drupal API站点。
如果存储了变量,则可以在变量表中找到。
您可以:
variable_set()
导致重新构建变量缓存,因此,通常为持久且一致的数据(例如管理设置等)保留该内容。或者换一种说法,不应在页面构建过程中更改的函数之间使用静态变量代替静态变量。