PHPackages                             rukavishnikov/psr-container - 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. rukavishnikov/psr-container

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

rukavishnikov/psr-container
===========================

A PSR-11 container interface implementation

v0.2.2(7mo ago)127MITPHPPHP &gt;=8.0

Since Mar 26Pushed 7mo ago1 watchersCompare

[ Source](https://github.com/Ilya-Ruk/psr-container)[ Packagist](https://packagist.org/packages/rukavishnikov/psr-container)[ Docs](https://github.com/Ilya-Ruk/psr-container)[ RSS](/packages/rukavishnikov-psr-container/feed)WikiDiscussions master Synced yesterday

READMEChangelog (5)Dependencies (2)Versions (6)Used By (0)

Dependency Injection (DI) container compatible with PSR-11
==========================================================

[](#dependency-injection-di-container-compatible-with-psr-11)

Features
--------

[](#features)

- [PSR-11](https://www.php-fig.org/psr/psr-11/) compatible
- Accepts array definitions
- Supports constructor injection, property injection and method injection
- Supports autoload of classes not specified in the container configuration
- Supports auto-wiring
- Supports closure
- Detects circular references
- Checks property types (default disable)
- Checks method parameter types (default disable)

Requirements
------------

[](#requirements)

- PHP 8.0 or higher
- PSR container 2.x

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

[](#installation)

```
composer require rukavishnikov/psr-container

```

Using the container
-------------------

[](#using-the-container)

### index.php

[](#indexphp)

```
$config = require 'config.php'; // Load config for container (see below)

$container = new Container($config); // Default used
//$container = new Container($config, true); // Strict mode used (see below)

if ($container->has(InterfaceOrClass::class)) {
    $instance = $container->get(InterfaceOrClass::class);
}
```

### config.php

[](#configphp)

```
return [
    ServerRequestInterface::class => ServerRequest::class, // Simple definition
    RouterInterface::class => [ // Full definition
        'class' => Router::class, // Required

        // Constructor injection
        '__construct()' => [
            [
                '/test' => TestController::class,
            ],
        ],
    ],
    TestController::class => [ // Full definition
        'class' => TestController::class, // Required

        // Constructor injection
        '__construct()' => [
            true, // Bool
            123, // Int
            5.0, // Float
            'qwerty', // String
            [1, 2, 3], // Array
            StdClass::class, // Class
            new DateTime(), // Instance
            fn () => function (Container $container) {
                return $container->get(StdClass::class);
            }, // Closure
        ],

        // Property injection
        '$public_a' => true, // Bool
        '$public_b' => 123, // Int
        '$public_c' => 5.0, // Float
        '$public_d' => 'qwerty', // String
        '$public_e' => [1, 2, 3], // Array
        '$public_f' => StdClass::class, // Class
        '$public_g' => new DateTime(), // Instance
        '$public_h' => fn () => function (Container $container) {
            return $container->get(StdClass::class);
        }, // Closure

        // Method injection
        'setA()' => [true], // Bool
        'setB()' => [123], // Int
        'setC()' => [5.0], // Float
        'setD()' => ['qwerty'], // String
        'setE()' => [[1, 2, 3]], // Array
        'setF()' => [StdClass::class], // Class
        'setG()' => [new DateTime()], // Instance
        'setH()' => [
            fn () => function (Container $container) {
                return $container->get(StdClass::class);
            }
        ], // Closure
    ],
    ResponseInterface::class => Response::class, // Simple definition
    EmitterInterface::class => Emitter::class, // Simple definition
];
```

Strict mode
-----------

[](#strict-mode)

For use strict mode to property type checking and method parameter type checking you can enable it on container create (second param). Default value is false.

###  Health Score

32

—

LowBetter than 69% of packages

Maintenance64

Regular maintenance activity

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 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 ~150 days

Total

5

Last Release

227d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/112574848?v=4)[Ilya Rukavishnikov](/maintainers/Ilya-Ruk)[@Ilya-Ruk](https://github.com/Ilya-Ruk)

---

Top Contributors

[![Ilya-Ruk](https://avatars.githubusercontent.com/u/112574848?v=4)](https://github.com/Ilya-Ruk "Ilya-Ruk (28 commits)")

---

Tags

psrphpcontainerPSR-11dependencyinjection

###  Code Quality

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/rukavishnikov-psr-container/health.svg)

```
[![Health](https://phpackages.com/badges/rukavishnikov-psr-container/health.svg)](https://phpackages.com/packages/rukavishnikov-psr-container)
```

###  Alternatives

[league/container

A fast and intuitive dependency injection container.

86894.4M442](/packages/league-container)

PHPackages © 2026

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