What do you think about a `lazy` method, which takes a `$key` and a `Closure` which would be invoked when no cached value is found.
This simplifies client code to something like

```php
$cachedValue = $cache->lazy($key, function() {
  // impl whatever should be done on cache miss
  // the returned value will be set into the CacheItem
});
```

This also reduces the need for the always repeated cache pattern

```php
$item = $cache->get($key);
If(!$item->isHit()) {
  // do stuff
  $item->set($key, $value);
} else {
  $value = $item->getValue();
}
```