I'm just getting started with Symfony, so I'm blogging some of the weird things I'm finding.
Symfony has a concept of Cache Contracts. You can call an expensive / slow / intensive operation and immediately cache the result for a specific time period. Next time you call the operation, the results are served from the cache until the expiry time has been hit.
Nifty! But I couldn't get it to work.
Take this sample code. It should return the current date and time and cache the result for 5 minutes (300 seconds). If you call it repeatedly, it should keep showing the old date until the 5 minutes are up.
PHP
<?php use Symfony\Contracts\Cache\ItemInterface; use Symfony\Component\Cache\Adapter\FilesystemAdapter; class Whatever { public function get_date() { $cache = new FilesystemAdapter(); $value = $cache->get('cached_date', function (ItemInterface $item) { $item->expiresAfter(300); $date = date("Y-m-d H:i:s"); return $date; }); return $value; } }
But it wasn't working. Why? I don't know. But I fixed it by using a namespaced cache:
PHP
$cache = new FilesystemAdapter("my_awesome_cache");
I hope that's helpful to someone - even if that someone is me in a few years' time!