Skip to content

📦 Класс Cache

Простая обёртка над modx()->cacheManager для удобной работы с кэшем в MODX. Поддерживает хранение, извлечение, очистку, удаление кэша, а также работу по паттерну remember().

🔹 Cache::get(string $key, array $options = []): mixed

Получить значение из кэша по ключу.

Пример:

php
$data = Cache::get('my_key');

🔹 Cache::set(string $key, $value, int $ttl = 3600, array $options = []): bool

Установить значение в кэш.

  • $ttl — время жизни в секундах (0 — навсегда).

Пример:

php
Cache::set('my_key', ['foo' => 'bar'], 600);

🔹 Cache::add(string $key, $value, int $ttl = 3600, array $options = []): bool

Добавить значение в кэш только если ключ ещё не существует.

Пример:

php
Cache::add('unique_key', 'value');

🔹 Cache::replace(string $key, $value, int $ttl = 3600, array $options = []): bool

Заменить значение в кэше только если ключ уже существует.

Пример:

php
Cache::replace('existing_key', 'new_value');

🔹 Cache::delete(string $key, array $options = []): bool

Удалить запись из кэша по ключу.

Пример:

php
Cache::delete('temp_key');

🔹 Cache::clear(string $cacheKey = 'pageblocks'): bool

Полностью очистить кэш: логически и физически (файлы).

Пример:

php
Cache::clear(); // удалит все из core/cache/pageblocks и очистит по ключу

🔹 Cache::remember(string $key, int $ttl, callable $callback, array $options = [], bool &$fromCache = false): mixed

Получить значение из кэша или сгенерировать его, если отсутствует.

Пример:

php
$user = Cache::remember('user_42', 3600, function () {
    return getUserFromDB(42);
}, [], $wasCached);

if ($wasCached) {
    echo 'Получено из кэша';
}

🔹 Cache::rememberForever(string $key, callable $callback, array $options = []): mixed

То же самое, что remember, но без времени истечения (хранится навсегда).

Пример:

php
$config = Cache::rememberForever('site_config', function () {
    return loadConfig();
});

🔹 Cache::generateObject(string $class, array $data): \xPDOObject

Создаёт и возвращает объект MODX из массива данных.

Пример:

php
$object = Cache::generateObject(modResource::class, ['pagetitle' => 'Home']);

© PageBlocks 2019-present