Dev Blog

When dealing with caching, common task is to load cache value, check if it is not empty and depending on it - either set some variable or perform some operation to retrieve this value.
This common tasks might scattered around various places in application. 
New cache component feature comes as remedy, allowing to execute callback if value is not already cached. This makes possible to use one-liners to either get cached value or retrieve it from any source.

Example use case

Assume that we need to load some data from remote database, which might take long. So we wan't to cache it for one minute. With additional callback parameter passed to get method. As a third parameter, timeout might be passed.
In example below, data will be loaded no more than once per minute. Without any additional if statements.

<?php

use Maslosoft\Cache\Cache;

class MyComponent
{
    public function __construct()
    {
         $data = Cache::fly()->get('data-key', [$this, 'loadData'], Cache::Minute);
    }
    
    public function loadData()
    {
        return MyModel::loadData();
    }
}