The Doctrine Cache extension adds the following features to Doctrine Cache implementation:
- Default lifetime
- Fetch with a namespace
- Save with a namespace
- Cache invalidation through namespace strategy
The easiest way to install DoctrineCacheExtension is via composer.
Create the following composer.json
file and run the php composer.phar install
command to install it.
{
"require": {
"openclassrooms/doctrine-cache-extension": "*"
}
}
<?php
require 'vendor/autoload.php';
use OpenClassrooms\DoctrineCacheExtension\CacheProviderDecorator;
//do things
OpenClassrooms CacheProviderDecorator needs a Doctrine CacheProvider to be instantiated.
$cacheProvider = new ArrayCache();
$cacheProviderDecorator = new CacheProviderDecorator($cacheProvider);
A factory can be used to accomplish this.
$factory = new CacheProviderDecoratorFactory();
$cacheProvider = $factory->create('array');
Specify lifetime in the constructor:
$cacheProviderDecorator = new CacheProviderDecorator($cacheProvider, 100);
$cacheProviderDecorator->save($id, $data);
Or via the factory:
$cacheProvider = $factory->create('array', 100);
Or specify a default lifetime for all the cache providers:
$factory = new CacheProviderDecoratorFactory();
$factory->setDefaultLifetime(100);
$data = $cacheProviderDecorator->fetchWithNamespace($id, $namespaceId);
// Namespace and life time can be null
$data = $cacheProviderDecorator->saveWithNamespace($id, $data, $namespaceId, $lifeTime);
$cacheProviderDecorator->invalidate($namespaceId);