PHPackages                             bretrzaun/settings - 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. bretrzaun/settings

ActiveLibrary

bretrzaun/settings
==================

01PHPCI failing

Since Jun 27Pushed 4y agoCompare

[ Source](https://github.com/bretrzaun/settings)[ Packagist](https://packagist.org/packages/bretrzaun/settings)[ RSS](/packages/bretrzaun-settings/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (1)Used By (0)

Settings
========

[](#settings)

[![Latest Stable Version](https://camo.githubusercontent.com/5df1479ba42aad81598a7021b277bf55f2011465e8c699cc421c50dc6b446772/68747470733a2f2f706f7365722e707567782e6f72672f62726574727a61756e2f73657474696e67732f76)](//packagist.org/packages/bretrzaun/settings)[![Build Status](https://camo.githubusercontent.com/01046404d510853a3d39ecd68995e8df95c99f6750a9bee6d0a48df6a1d0856a/68747470733a2f2f7472617669732d63692e6f72672f62726574727a61756e2f73657474696e67732e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/bretrzaun/settings)[![License](https://camo.githubusercontent.com/5ea2cd0882169c3bb1741fca88d6a8c0047885e409cef64155680caa114ee15a/68747470733a2f2f706f7365722e707567782e6f72672f62726574727a61756e2f73657474696e67732f6c6963656e7365)](//packagist.org/packages/bretrzaun/settings)

Manage application settings.

Installation
------------

[](#installation)

Install via [Composer](https://getcomposer.org):

```
composer require bretrzaun/settings

```

Usage
-----

[](#usage)

### 1. Create a settings instance

[](#1-create-a-settings-instance)

```
$settings = new BretRZaun\Settings\Settings();

```

### 2. Fill values

[](#2-fill-values)

```
use BretRZaun\Settings\Value\SimpleValue;

$value1 = new SimpleValue(1, 'Value 1');
$settings->add($value1);
$value2 = new SimpleValue(2, 'Value 2');
$settings->add($value2);

```

The SimpleValue class stores any key/value information.

### 3. Persist values

[](#3-persist-values)

To persist the settings use a storage class, which implements the `BretRZaun\Settings\Storage\StorageInterface`. Currently these storages are supported:

- FileStorage
- MongoDbStorage

#### Example 1 - save settings:

[](#example-1---save-settings)

```
$storage = new FileStorage('setting.json');
$storage->save($settings);

```

#### Example 2 - load settings:

[](#example-2---load-settings)

```
$storage = new FileStorage('setting.json';
$settings = $storage->load(Settings::class);

```

Loads the settings into an instance of the given settings class.

Advanced usage
--------------

[](#advanced-usage)

### Annual settings

[](#annual-settings)

Settings which have different values per year can be managed with the `AnnualSettings` class and the `AnnualValue` class.

```
$first2019 = new AnnualValue(1, 'First 2019', 2019);
$second2019 = new AnnualValue(2, 'Second 2019', 2019);
$first2020 = new AnnualValue(1, 'First 2020', 2020);
$second2020 = new AnnualValue(2, 'Second 2020', 2020);

$settings = new AnnualSettings([$first2019, $second2019, $first2020, $second2020]);

```

To retrieve all settings for 2019 use:

```
$settings->findByYear(2019);

-> [$first2019, $second2019]

```

To get a certain key for a year:

```
$settings->getByYearAndKey(2019, 2);

-> $second2019

```

To get a certain key for a year - with going back to the last existing year:

```
$settings->getLastByYearAndKey(2021, 1);

-> $first2020

```

Note: Since there is no entry for the year 2021 it goes back until it finds a year with the requested key.

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity29

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/277782?v=4)[Bret R. Zaun](/maintainers/bretrzaun)[@bretrzaun](https://github.com/bretrzaun)

---

Top Contributors

[![bretrzaun](https://avatars.githubusercontent.com/u/277782?v=4)](https://github.com/bretrzaun "bretrzaun (18 commits)")

### Embed Badge

![Health badge](/badges/bretrzaun-settings/health.svg)

```
[![Health](https://phpackages.com/badges/bretrzaun-settings/health.svg)](https://phpackages.com/packages/bretrzaun-settings)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
