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);
}
}