master

laravel/framework

Last updated at: 29/12/2023 09:20

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 of CacheManager class.
    • 'cache.store' - The driver from the 'cache' service.
    • 'cache.psr6' - A new instance of Psr16Adapter class with the 'cache.store' passed as a parameter.
    • 'memcached.connector' - A new instance of MemcachedConnector class.
    • RateLimiter::class - A new instance of RateLimiter 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,
        ];
    }
}