Silex Cache Service Provider
, (*1)
This service provider for Silex 2.0 uses the Cache classes from Doctrine
Common to provide a cache service to a Silex application, and other service providers., (*2)
Install
Add euskadi31/cache-service-provider to your composer.json:, (*3)
% php composer.phar require euskadi31/cache-service-provider:~1.0
Usage
Configuration
If you only need one application wide cache, then it's sufficient to
only define a default cache, by setting the default key in cache.options., (*4)
The cache definition is an array of options, with driver being the
only mandatory option. All other options in the array, are treated as
constructor arguments to the driver class., (*5)
The cache named default is the cache available through the app's
cache service., (*6)
<?php
$app = new Silex\Application;
$app->register(new \Euskadi31\Silex\Provider\CacheServiceProvider, [
'cache.options' => [
'default' => [
'driver' => 'apc'
]
]
]);
The driver name can be either:, (*7)
- A fully qualified class name
- A simple identifier like "apc", which then gets translated to
\Doctrine\Common\Cache\ApcCache.
- A Closure, which returns an object implementing
\Doctrine\Common\Cache\Cache.
This cache is then available through the cache service, and provides
an instance of Doctrine\Common\Cache\Cache:, (*8)
if ($app['cache']->contains('foo')) {
echo $app['cache']->fetch('foo'), "<br />";
} else {
$app['cache']->save('foo', 'bar');
}
To configure multiple caches, define them as additional keys in cache.options:, (*9)
$app->register(new \Euskadi31\Silex\Provider\CacheServiceProvider, [
'cache.options' => [
'default' => [
'driver' => 'apc'
],
'file' => [
'driver' => 'filesystem',
'directory' => '/tmp/myapp'
],
'global' => [
'driver' => function() {
$redis = new \Doctrine\Common\Cache\RedisCache;
$redis->setRedis($app['redis']);
return $redis;
}
]
]
]);
All caches (including the default) are then available via the caches service:, (*10)
$app['caches']['file']->save('foo', 'bar');
License
CacheServiceProvider is licensed under the MIT license., (*11)