PHPackages                             contenir/maintenance - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. contenir/maintenance

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

contenir/maintenance
====================

Framework-agnostic maintenance-mode toggle for Contenir CMS — admin writes, Site reads.

v0.1.1(1mo ago)0321MITPHPPHP ^8.1 || ^8.2 || ^8.3

Since May 5Pushed 1mo agoCompare

[ Source](https://github.com/contenir/maintenance)[ Packagist](https://packagist.org/packages/contenir/maintenance)[ RSS](/packages/contenir-maintenance/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (3)Versions (3)Used By (1)

contenir/maintenance
====================

[](#contenirmaintenance)

Framework-agnostic maintenance-mode toggle for [Contenir CMS](https://github.com/contenir).

The CMS writes a maintenance flag (and optional message); the consuming Site (Mezzio, Laminas MVC, anything else) reads it on every request and returns 503 with the message until the flag is cleared.

This package provides the *domain* — a small immutable state value plus a repository interface, with file-based and in-memory implementations. Framework-specific middleware/listeners come from sibling packages.

Install
-------

[](#install)

```
composer require contenir/maintenance
```

Zero runtime dependencies — pure PHP 8.1+.

Usage
-----

[](#usage)

### Reading state

[](#reading-state)

```
use Contenir\Maintenance\Repository\FileRepository;

$repo = new FileRepository('/var/www/shared/maintenance.local.php');
$state = $repo->get();

if ($state->active) {
    // Render 503 with $state->message
}
```

### Writing state (admin)

[](#writing-state-admin)

```
use Contenir\Maintenance\MaintenanceState;

$repo->save(MaintenanceState::active('Back online by 5pm AEST.'));

// ... later ...
$repo->save(MaintenanceState::inactive());
```

### File format

[](#file-format)

`FileRepository` reads/writes a PHP file that returns an array:

```
