Вы здесь

Создание глобальной переменной в модуле

0

Здравствуйте.
Пишу небольшой модуль, который производит некоторые расчёты и получает массив значений. Скажите, пожалуйста, как правильно сделать в Drupal так, чтобы полученная мной переменная была доступна для использования в других модулях и шаблонах?

UPD: Нагуглил variable_set \ variable_get и реализация получалась и работает, как мне и нужно. Но почему то встретил, что их использовать не рекоментудется. Есть способ лучше? Привязывать переменную к юзеру не нужно.

Версия Drupal: 
7.x
Вопрос задан 18.01.2016 - 09:19
Аватар пользователя Quty
Quty
34

Ответы

2

variable_get/variable_set - это ваш случай, но этих данных должно быть "относительно" немного, например массив из 10000 строк, причём некоторые из них нужно менять, добавлять и удалять, лучше хранить в таблице.

Ответ дан 18.01.2016 - 10:17

Если ТС будет пересчитывать данные при каждой загрузке страницы, то постоянный cache_clear() c variable_set() не есть хорошо

Комментарий оставлен 18.01.2016 - 10:20

variable_set вызывает очистку таблицы cache_bootstrap, эту функцию нельзя использовать для хранения глобальных переменных

Комментарий оставлен 18.01.2016 - 10:29

тогда уточню: если ваш модуль не собирается его очень часто менять (в условии задачи не сказано), то проблем нет с variable_set.

Комментарий оставлен 18.01.2016 - 11:40

Спасибо. Данных немного. Массив на 10-20 значений (курс валют). Пересчитывать значение планирую раз в 12 часов, вызовом определённого URL. Думаю, действительно этот вариант здесь самый оптимальный. Очень удобно.

UPD: Дошло, что можно не трогать URL, а вызывать функцию обновления напрямую из hook_cron.

Комментарий оставлен 18.01.2016 - 14:59

cache_get() + cache_set() и тогда hook_cron() не понадобится

Комментарий оставлен 18.01.2016 - 18:34
0

$GLOBALS
или static переменная в функции

Ответ дан 18.01.2016 - 09:47
Аватар пользователя xandeadx
xandeadx
1542
0

Или синглтон для эстетов, бггг

Ответ дан 18.01.2016 - 10:04