CacheServiceProvider.php
TLDR
The CacheServiceProvider.php
file is a part of the Illuminate\Cache
namespace in the Demo Projects project. It is a service provider that registers various cache-related services in the Laravel application.
Methods
There are no custom methods defined in this file.
Classes
CacheServiceProvider
The CacheServiceProvider
class extends the ServiceProvider
class and implements the DeferrableProvider
interface. It provides the necessary logic for registering cache-related services in the Laravel application. Here is a brief description of what the class does:
-
In the
register
method, it sets up and registers the following singleton services:-
'cache'
- A new instance ofCacheManager
class. -
'cache.store'
- The driver from the'cache'
service. -
'cache.psr6'
- A new instance ofPsr16Adapter
class with the'cache.store'
passed as a parameter. -
'memcached.connector'
- A new instance ofMemcachedConnector
class. -
RateLimiter::class
- A new instance ofRateLimiter
class with the cache driver retrieved based on the'cache.limiter'
configuration.
-
-
The
provides
method returns an array of string service names and a class name indicating the services provided by this service provider:return [ 'cache', 'cache.store', 'cache.psr6', 'memcached.connector', RateLimiter::class, ];
END
<?php
namespace Illuminate\Cache;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider;
use Symfony\Component\Cache\Adapter\Psr16Adapter;
class CacheServiceProvider extends ServiceProvider implements DeferrableProvider
{
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->app->singleton('cache', function ($app) {
return new CacheManager($app);
});
$this->app->singleton('cache.store', function ($app) {
return $app['cache']->driver();
});
$this->app->singleton('cache.psr6', function ($app) {
return new Psr16Adapter($app['cache.store']);
});
$this->app->singleton('memcached.connector', function () {
return new MemcachedConnector;
});
$this->app->singleton(RateLimiter::class, function ($app) {
return new RateLimiter($app->make('cache')->driver(
$app['config']->get('cache.limiter')
));
});
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return [
'cache', 'cache.store', 'cache.psr6', 'memcached.connector', RateLimiter::class,
];
}
}