Вам не нужен полный ремонт, чтобы обновить устаревший интерьер. Эти советы помогут вашему дому ...
Невеста заслуживает девичник такой же красивый, как она сама. Мы собрали для вас идеи девичника, ...
... этих приемов
для визуального ... пространства. Многие
предпочитают не раскрывать ...
... компании Roy Bosh
Екатериной Ломакиной.
... решено сделать «волшебный»
Сейчас работаю над доработкой/переписыванием проекта, который был написан, ну скажем так, «не совсем грамотно». По ходу есть задача оптимизировать работу, т.к. код изначально был написан крайне неоптимально. Среди работ по оптимизации прикручивается кэш.
В проекте есть несколько разных источников данных, результаты работы которых хорошо было бы кэшировать, основной — конечно БД. Хотелось решения прозрачного, с минимальной кровью. В один прекрасный момент надоедает писать конструкции вида
$query = "Select something";
$result = $cache->get($query, $tag);
if (!$result) {
$result = $db->queryAll($query);
$cache->set($query, $tag);
}
И хочется чего-то другого. Конечно, код можно вынести в отдельную функцию или метод, но это как-то скучно и к тому же, для каждого разного вызова (а там есть не только $db->queryAll, а несколько разных вариантов) нужен будет свой код и своя функция/метод.
С другой стороны, добавлять код кэширования непосредственно в источники данных тоже не очень правильно — в конце концов, они этим не должны заниматься (именно поэтому Трейты тоже не подходят). Создавать отдельный класс кэша тоже не очень удобно.
В общем, хотелось единого, универсального решения, которое бы подошло для разных источников данных, с разными интерфейсами, но в то же время было единообразным. Было решено сделать «волшебный» декоратор.
Читать дальше →