vitaly_74
@vitaly_74

Как кешировать переменные на уровне php?

имеется такой код:
static $graph = false;
        if($graph !== false){
            return $graph;
        }
        $graph =  DB::getRecords();
        return $graph;

1. сначала создается статическая переменная, затем проверяется присвоено ли ей значение, если нет, то присваиваем (например лезем в базу и получаем данные).
2. в след. раз, когда хотим получить теже данные никуда не лезем а возвращаем прежнюю выборку.
Такого рода код у меня ест ьв нескольких местах (но в бд лезем за разными данными), подскажите как можно убрать повторяющуюся конструкцию?
  • Вопрос задан
  • 241 просмотр
Пригласить эксперта
Ответы на вопрос 1
@rPman
Что именно убрать? слишком большой код?, заверни в функцию с передачей имени переменной в аргументах:
function cache($name,$callback)
{
	static $cache = [];

	if(isset($cache[$name])) return $cache[$name];
	return $cache[$name] = $callback();
}

var_dump(cache('graph',fn()=>DB::getRecords()));

и ошибки получения данных разрули, и инвалидацию (тогда к cache нужен доступ из разных методов, а значит лучше оформить в виде класса, или если процедурно, добавить управляющий параметр в функцию)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы