master

laravel/framework

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

CacheBasedMaintenanceMode.php

TLDR

The provided file, CacheBasedMaintenanceMode.php, is a class that implements the MaintenanceMode interface. It provides methods to activate and deactivate maintenance mode, check if maintenance mode is active, and retrieve data related to maintenance mode. The class relies on a cache store to store maintenance mode information.

Methods

activate

This method takes an array payload as a parameter and stores it in the cache using the key specified in the constructor. This activates the maintenance mode.

deactivate

This method removes the maintenance mode data from the cache using the key specified in the constructor. This deactivates the maintenance mode.

active

This method checks if maintenance mode is currently active. It returns true if the cache contains data with the specified key, indicating that maintenance mode is active.

data

This method retrieves the array payload that was stored in the cache when maintenance mode was activated.

getStore

This method returns the cache store to be used, based on the store specified in the constructor.

Classes

There are no additional classes in this file.

<?php

namespace Illuminate\Foundation;

use Illuminate\Contracts\Cache\Factory;
use Illuminate\Contracts\Cache\Repository;
use Illuminate\Contracts\Foundation\MaintenanceMode;

class CacheBasedMaintenanceMode implements MaintenanceMode
{
    /**
     * The cache factory.
     *
     * @var \Illuminate\Contracts\Cache\Factory
     */
    protected $cache;

    /**
     * The cache store that should be utilized.
     *
     * @var string
     */
    protected $store;

    /**
     * The cache key to use when storing maintenance mode information.
     *
     * @var string
     */
    protected $key;

    /**
     * Create a new cache based maintenance mode implementation.
     *
     * @param  \Illuminate\Contracts\Cache\Factory  $cache
     * @param  string  $store
     * @param  string  $key
     * @return void
     */
    public function __construct(Factory $cache, string $store, string $key)
    {
        $this->cache = $cache;
        $this->store = $store;
        $this->key = $key;
    }

    /**
     * Take the application down for maintenance.
     *
     * @param  array  $payload
     * @return void
     */
    public function activate(array $payload): void
    {
        $this->getStore()->put($this->key, $payload);
    }

    /**
     * Take the application out of maintenance.
     *
     * @return void
     */
    public function deactivate(): void
    {
        $this->getStore()->forget($this->key);
    }

    /**
     * Determine if the application is currently down for maintenance.
     *
     * @return bool
     */
    public function active(): bool
    {
        return $this->getStore()->has($this->key);
    }

    /**
     * Get the data array which was provided when the application was placed into maintenance.
     *
     * @return array
     */
    public function data(): array
    {
        return $this->getStore()->get($this->key);
    }

    /**
     * Get the cache store to use.
     *
     * @return \Illuminate\Contracts\Cache\Repository
     */
    protected function getStore(): Repository
    {
        return $this->cache->store($this->store);
    }
}