Мемоізація та кешування функцій за допомогою цього PHP-пакету

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 30 липня, 2025
Збирання та кешування результатів функцій можуть суттєво підвищити продуктивність вашого додатку. Дізнайтеся, як це зробити за допомогою бібліотеки Memoize для PHP. У нашій статті ми розглянемо можливості цієї легкої бібліотеки та її здатність спростити складні обчислення у ваших проектах

Memoize — це легка бібліотека для PHP, яка спрощує кешування функцій та їх запам'ятовування. Вона може значно підвищити продуктивність вашого застосунку, зберігаючи результати дорогих викликів функцій, щоб повторні запити з тими ж аргументами повертались миттєво без повторної обробки:

// Використання допоміжної функції
$result1 = memoize()->memo('expensive_calc', function () {
    sleep(2); // Симулює затратну операцію
    return 42 * 1.5 + rand(1, 100);
});
 
// Другий виклик з тим же ключем: повертає закешований результат (швидко)
$result2 = memoize()->memo('expensive_calc', function () {
    sleep(2); // Цей код не виконається
    return 99999; // Це значення буде ігноруватися, повернеться закешоване
});
 
// $result1 === $result2 (одинакове закешоване значення)
 
// Інший ключ: функція виконується знову
$result3 = memoize()->memo('another_calc', function () {
    return 'інше обчислення';
});

Цей пакет запам'ятовування є корисним для оптимізації продуктивності, зокрема для затратних запитів до бази даних, API, завантаження конфігурацій, обробки файлів та інших задач:

$getUserData = function ($userId) {
    // Затратний запит до бази даних або API
    return database()->query("SELECT * FROM users WHERE id = ?", [$userId]);
};
 
// Кешування даних користувача за ID
$user = memoize()->memo("user_$userId", $getUserData);
$sameUser = memoize()->memo("user_$userId", $getUserData); // З кешу

# Основні можливості

Ви можете почати використовувати цей пакет на GitHub: tomloprod/memoize

Схоже: Якщо ви використовуєте фреймворк Laravel, зверніть увагу на допоміжну функцію once() та Memoized Cache Driver. Spatie також пропонує пакет spatie/once, який є магічною функцією запам'ятовування для ваших PHP проектів