PHPackages                             m6w6/merry - 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. [PSR &amp; Standards](/categories/psr-standards)
4. /
5. m6w6/merry

ActiveLibrary[PSR &amp; Standards](/categories/psr-standards)

m6w6/merry
==========

Merry container and configuration

v1.1.0(11y ago)035BSD-2-ClausePHP

Since Aug 14Pushed 11y agoCompare

[ Source](https://github.com/m6w6/merry)[ Packagist](https://packagist.org/packages/m6w6/merry)[ Docs](http://github.com/m6w6/merry)[ RSS](/packages/m6w6-merry/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (3)Used By (0)

merry\\Config
=============

[](#merryconfig)

A merry configuration container. [![Build Status](https://camo.githubusercontent.com/fbaa47a49b49f0758247dbacdcfcc8043c16ae7b8c0b8d169e30b36f2f7d010a/68747470733a2f2f7472617669732d63692e6f72672f6d3677362f6d657272792e737667)](https://travis-ci.org/m6w6/merry)

Example:

```
use merry\Config;

$config = new Config([
    "db" => [
        "dsn" => "user=mike",
        "flags" => pq\Connection::PERSISTENT
    ],
    "cache" => [
        "pid" => "cluster1",
        "hosts" => ["10.0.1.1", "10.0.1.2", "10.0.1.3"]
    ]
]);

printf("Using database: '%s'\n", $config->db->dsn);
printf("Using cache cluster: '%s'\n", $config->cache->pid);

$config->apply([
    "db" => function($conf) {
        return new pq\Connection($conf->dsn, $conf->flags);
    },
    "cache" => function($conf) {
        $cache = new Memcached($conf->pid);
        foreach ($conf->{$conf->pid}->hosts as $host) {
            $cache->addServer($host);
        }
        return $cache;
    }
]);

extract($config->toArray());

if (!($q1 = $cache->get("q1"))) {
    $result = $db->exec("SELECT 1");
    $cache->set("q1", $q1 = $result->fetchAll());
}
```

Another example:

```
use merry\Config;

$array = parse_ini_string('
[localhost]
db.dsn = "user=mike"
db.flags = 2 ;pq\Connection::PERSISTENT
cache.pid = "cluster1"
cache.cluster1.hosts[] = "10.0.1.1"
cache.cluster1.hosts[] = "10.0.1.2"
cache.cluster1.hosts[] = "10.0.1.3"
[production : localhost]
db.dsn = "user=app"
');

$config = new Config($array, getenv("APPLICATION_ENV"));
$flags = \RecursiveTreeIterator::BYPASS_CURRENT;
foreach (new \RecursiveTreeIterator($config, $flags) as $key => $val ) {
    printf("%s: %s\n", $key, ($val instanceof Config) ? "" : $val);
}
```

Output:

```
|-db:
| |-dsn: user=app
| \-flags: 2
\-cache:
  |-pid: cluster1
  \-cluster1:
    \-hosts:
      |-0: 10.0.1.1
      |-1: 10.0.1.2
      \-2: 10.0.1.3

```

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity64

Established project with proven stability

 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.

###  Release Activity

Cadence

Every ~209 days

Total

2

Last Release

4077d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2aba95ff5669114af00bd2d49612ffab9e4a29312c00062abef657fec7a2f122?d=identicon)[m6w6](/maintainers/m6w6)

---

Top Contributors

[![m6w6](https://avatars.githubusercontent.com/u/1265282?v=4)](https://github.com/m6w6 "m6w6 (5 commits)")

---

Tags

containerconfigurationconfigmerry

### Embed Badge

![Health badge](/badges/m6w6-merry/health.svg)

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

###  Alternatives

[psr/container

Common Container Interface (PHP FIG PSR-11)

10.0k1.0B3.7k](/packages/psr-container)[pimple/pimple

Pimple, a simple Dependency Injection Container

2.7k130.5M1.4k](/packages/pimple-pimple)[php-di/php-di

The dependency injection container for humans

2.8k48.9M995](/packages/php-di-php-di)[league/container

A fast and intuitive dependency injection container.

86387.8M342](/packages/league-container)[sandrokeil/interop-config

Provides interfaces and a concrete implementation to create instances depending on configuration via factory classes and ensures a valid config structure. It can also be used to auto discover factories and to create configuration files.

58446.7k34](/packages/sandrokeil-interop-config)[michaels/data-manager

Simple data manager for nested data, dot notation array access, extendability, and container interoperability.

121.9k2](/packages/michaels-data-manager)

PHPackages © 2026

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