PHP 8.5: атрибут NoDiscard для ключа кеша (Bitrix)
Функция формирования ключа кеша с #[ oDiscard] (PHP 8.5): предупреждение, если возвращаемое значение не использовано. Приведение (void) для явного игнорирования.
Как использовать
- Скопируйте нужный фрагмент кода.
- Вставьте в свой проект и при необходимости измените под задачу.
- Проверьте зависимости и окружение (версии, переменные).
В PHP 8.5 добавлен атрибут NoDiscard: если возвращаемое значение функции не использовано и не отброшено явно через (void), выдаётся предупреждение. Удобно для функций, которые формируют ключ кеша, ID или URL — забытый результат не теряется «молча». В Bitrix при работе с кешем (теги, ключи по модулю/сущности) это снижает риск ошибок.
<?php
#[\NoDiscard]
function buildCacheKey(string $module, string $entity, string $id): string
{
return $module . ':' . $entity . ':' . $id;
}
// Предупреждение: return value should be used or (void)
buildCacheKey('sale', 'order', '123');
// Корректно: результат используется
$key = buildCacheKey('sale', 'order', '123');
$cache->get($key);
// Корректно: намеренное игнорирование (например, только сброс по тегу)
(void) buildCacheKey('sale', 'order', '123');
Usage:
use Bitrix\Main\Data\Cache;
$cache = Cache::createInstance();
$key = buildCacheKey('sale', 'order', (string) $orderId);
if ($cache->initCache(3600, $key, '/sale/order/')) {
$data = $cache->getVars();
} elseif ($cache->startDataCache()) {
// ...
$cache->endDataCache($data);
}
Notes:
⚠️ По документации PHP 8.5: атрибут в глобальном пространстве — #[\NoDiscard]. Приведение (void) не влияет на выполнение, но подавляет предупреждение и показывает намерение не использовать значение. Подходит для ключей кеша Bitrix и любых функций, чей результат обязан быть учтён.