ALBIREO CMS
version: 2025.11.01

Функции хранилища Albireo CMS

delVal getVal setVal storage

Функция delVal

Функция delVal является удобной оберткой (синтаксическим сахаром) для функции storage(). Она упрощает удаление данных из временного хранилища, которое существует в рамках одного HTTP-запроса.

Сигнатура

function delVal(string $key): void

Аргументы

string $key
Ключ, по которому будет удалено значение из хранилища.

Результат

Функция ничего не возвращает (void).

Примеры использования

Пример: Очистка временных данных

Предположим, в процессе выполнения запроса мы кешируем какие-то данные, которые нужны в нескольких местах, а затем их необходимо удалить, чтобы освободить память.

// Кешируем результат "тяжелой" операции
$heavyData = ['result' => '... some very large data ...'];
setVal('heavy_data_cache', $heavyData);

// ... используем данные в разных частях приложения ...
$cachedData = getVal('heavy_data_cache');
// ...

// После того как данные больше не нужны, их можно удалить
delVal('heavy_data_cache');

// Теперь попытка получить данные вернет значение по умолчанию
$checkData = getVal('heavy_data_cache', 'Кеш очищен');
echo $checkData; // Выведет: Кеш очищен

Примечания

  • Обертка: Функция является оберткой для storage() и полностью зависит от её реализации.
  • Парные функции: Обычно используется в паре с функциями setVal() для записи и getVal() для чтения данных.
  • Время жизни данных: Данные удаляются из хранилища, которое существует только в рамках текущего HTTP-запроса.

Функция getVal

Функция getVal является удобной оберткой (синтаксическим сахаром) для функции storage(). Она упрощает получение данных из временного хранилища, которое существует в рамках одного HTTP-запроса. Обычно используется в паре с функцией setVal().

Сигнатура

function getVal(string $key, mixed $default = []): mixed

Аргументы

string $key
Ключ, по которому нужно получить значение.
mixed $default (необязательный)
Значение по умолчанию, которое будет возвращено, если ключ не найден. По умолчанию используется пустой массив [].

Результат

Возвращает сохраненное значение (тип mixed) или значение из параметра $default, если ключ не существует.

Примеры использования

Пример 1: Основное использование

Основной сценарий — получение данных, сохраненных ранее в рамках того же запроса.

// Где-то в начале выполнения скрипта мы сохраняем данные:
setVal('page_id', 42);

// ... другой код ...

// В другой части приложения мы получаем эти данные:
$currentPageId = getVal('page_id'); // $currentPageId будет равно 42

Пример 2: Работа со значениями по умолчанию

Если ключ не найден, функция вернет значение, указанное вторым аргументом.

// Пытаемся получить настройки темы, которых еще нет в хранилище
$themeOptions = getVal('theme_options');
// $themeOptions будет равен [] (пустому массиву), т.к. это значение по умолчанию

// Можно указать другое значение по умолчанию
$sidebarStatus = getVal('sidebar_status', 'visible');
// $sidebarStatus будет равен 'visible'

Примечания

  • Обертка: Функция является оберткой для storage() и полностью зависит от её реализации.
  • Парная функция: Обычно используется в паре с функцией setVal() для записи данных.
  • Время жизни данных: Данные, полученные через getVal, существуют только в рамках текущего HTTP-запроса.

Функция setVal

Функция setVal является удобной оберткой (синтаксическим сахаром) для функции storage(). Она упрощает запись данных во временное хранилище, существующее в рамках одного HTTP-запроса, избавляя от необходимости указывать режим работы.

Сигнатура

function setVal(string $key, mixed $value): void

Аргументы

string $key
Ключ, по которому будет сохранено значение.
mixed $value
Значение для сохранения. Может быть любого типа, так как оно будет сериализовано перед записью.

Результат

Функция ничего не возвращает (void).

Примеры использования

Пример 1: Сохранение и последующее получение данных

Функция используется для того, чтобы сохранить данные в одной части приложения и получить их в другой.

// В одной части приложения (например, в контроллере) мы сохраняем данные.
$currentUser = ['id' => 42, 'login' => 'admin', 'email' => 'admin@example.com'];
setVal('user_data', $currentUser);

setVal('page_title', 'Главная страница');

// ... какой-то другой код ...

// В другой части приложения (например, в шаблоне) мы эти данные получаем.
// Предполагается, что существует парная функция getVal().
$user = getVal('user_data', []); 
$title = getVal('page_title', 'Без названия');

echo "<h1>{$title}</h1>"; // Выведет: <h1>Главная страница</h1>
echo "<p>Текущий пользователь: {$user['login']}</p>"; // Выведет: <p>Текущий пользователь: admin</p>

Примечания

  • Обертка: Функция является оберткой для storage() и полностью зависит от её реализации.
  • Парная функция: Обычно используется в паре с функцией getVal() для получения сохраненных данных.
  • Время жизни данных: Данные, сохраненные через setVal, доступны только в рамках текущего HTTP-запроса.

Функция storage

Функция storage предоставляет простое key-value хранилище, которое существует только в рамках одного HTTP-запроса. Она использует статическую переменную для хранения данных, что позволяет обмениваться информацией между разными частями приложения, не прибегая к глобальным переменным.

Сигнатура

function storage(int $mode, string $key, mixed $value, mixed $default): mixed

Аргументы

int $mode

Режим работы функции:

  • 1Запись. Сохраняет $value по ключу $key.
  • 2Получение. Возвращает значение по ключу $key или $default, если ключ не найден.
  • 3Удаление. Удаляет значение по ключу $key.
string $key
Ключ, по которому осуществляется доступ к данным.
mixed $value
Значение для записи. Используется только в режиме записи ($mode = 1).
mixed $default
Значение по умолчанию. Используется только в режиме получения ($mode = 2), если ключ не найден.

Результат

Возвращаемое значение зависит от режима работы:

  • При $mode = 1 (запись) и $mode = 3 (удаление) функция ничего не возвращает (null).
  • При $mode = 2 (получение) функция возвращает сохраненное значение (тип mixed) или значение из параметра $default, если ключ не найден.

Примеры использования

Пример: Передача данных между компонентами

Предположим, в начале выполнения скрипта мы получаем данные пользователя, а затем нам нужно использовать их в виджете, который вызывается гораздо позже.

// --- В начале скрипта (например, в роутере или контроллере) ---

// Получаем данные пользователя (например, из базы данных)
$userData = ['id' => 7, 'name' => 'Иван', 'role' => 'editor'];

// Сохраняем их в хранилище
storage(1, 'currentUser', $userData, null);


// --- Позже, в файле шаблона или виджета ---

// Получаем данные из хранилища. Если их нет, вернется пустой массив.
$user = storage(2, 'currentUser', null, []);

if ($user) {
    echo 'Здравствуйте, ' . htmlspecialchars($user['name']) . '!';
}

// Получаем несуществующий ключ с дефолтным значением
$theme = storage(2, 'theme_settings', null, 'default-theme');
echo 'Текущая тема: ' . $theme; // Выведет: Текущая тема: default-theme

// Удаляем данные из хранилища, чтобы освободить память
storage(3, 'currentUser', null, null);

Примечания

  • Время жизни данных: Главная особенность — хранилище существует только в течение одного запроса. Данные не сохраняются между запросами или для других пользователей.
  • Сериализация: Все значения перед записью проходят через serialize(), а при чтении — через unserialize(). Это позволяет хранить сложные типы данных, такие как массивы и объекты.
  • См. setVal(), getVal(), delVal()