PSR-6 and PSR-16 implementation using the doctrine cache system.
<?php
$pool = new PSX\Cache\Pool(new Doctrine\Common\Cache\FilesystemCache());
$item = $pool->getItem('foo');
if (!$item->isHit()) {
$value = doComplexTask();
$item->set($value);
$item->expiresAfter(3600);
$pool->save($item);
} else {
$value = $item->get();
}
<?php
$cache = new PSX\Cache\SimpleCache(new Doctrine\Common\Cache\FilesystemCache());
$value = $cache->get('foo');
if ($value === null) {
$value = doComplexTask();
$cache->set('foo', $value, 3600);
}