Функции хранилища Albireo CMS
Функция 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()