Часто при написании модуля, появляется необходимость записать какие-то данные в переменную, которую можно будет затем в любой момент поправить и использовать. Объявлять свою табличку в модуле для этого может оказаться жирным, а использование конфигураций - неоправданным. В Drupal 7 для этого были две функции variable_get() и variable_set(). В Drupal 8 они были заменены на State API.
Данный API должен использоваться в обход конфигураций только тогда, когда ваша цель использования удовлетворяет требованиям:
- Этот API будет использоваться для хранения какой-то системной информации;
- Вы не хотите переносить данные настройки с сервера на сервер, а также из различных окружений (например с dev на production);
- Эти данные не будут редактироваться пользователем через интерфейс.
Пример использования State API - хранение таймштампа последнего запуска cron операций.
Запись значений
Для записи используется пара ключ, значение.
\Drupal::state()->set('key','value');
Для множественной записи используется следующий код:
// $values - массив с парами ключ и значение.
$values = [
'key' => 'value',
'key2' => 'value2'
];
\Drupal::state()->setMultiple($values);
Получение данных
Получение одного значения по ключу.
$val = \Drupal::state()->get('key');
Получение сразу нескольких значений.
$keys = [
'key',
'key2'
];
$pairs = \Drupal::state()->getMultiple($keys);
Удаление данных
Удаление доступно лишь по одному значению.
\Drupal::state()->delete('key');
Вот так заменили две переменные на ООП вариант. С приходом конфигураций, надобность в них сильно уменьшится.
Потому что это не считается надёжным и постоянным хранилищем для важных данных. Для хранения настроек модуля лучше использовать хранилище конфигураций, его можно и сохранить и экспортировать и синхронизировать.
Вот пример создания конфигурации https://niklan.net/blog/179