PHPackages                             juliangut/slim-php-di - 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. juliangut/slim-php-di

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

juliangut/slim-php-di
=====================

Slim Framework PHP-DI container integration

4.2(2y ago)1730.7k↓46.4%4[2 PRs](https://github.com/juliangut/slim-php-di/pulls)2BSD-3-ClausePHPPHP ^8.0

Since Aug 16Pushed 1y ago3 watchersCompare

[ Source](https://github.com/juliangut/slim-php-di)[ Packagist](https://packagist.org/packages/juliangut/slim-php-di)[ Docs](http://github.com/juliangut/slim-php-di)[ GitHub Sponsors](https://github.com/juliangut)[ RSS](/packages/juliangut-slim-php-di/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (16)Versions (31)Used By (2)

[![PHP version](https://camo.githubusercontent.com/6913801024bb6087176dec5fdb59388730a49b167cbb013222a7acbaecb48b7c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d253345253344382e302d3838393242462e7376673f7374796c653d666c61742d737175617265)](http://php.net)[![Latest Version](https://camo.githubusercontent.com/7bece0fee1f55b37a6faaedb5a8328faafa680c3e5b5c5bf90ca88add480197a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f767072652f6a756c69616e6775742f736c696d2d7068702d64692e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/juliangut/slim-php-di)[![License](https://camo.githubusercontent.com/60caaacc807087f890c8a82782975fa8530d237dcd94d0a025590185567e8a3c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6a756c69616e6775742f736c696d2d7068702d64692e7376673f7374796c653d666c61742d737175617265)](https://github.com/juliangut/slim-php-di/blob/master/LICENSE)

[![Total Downloads](https://camo.githubusercontent.com/e9e24719c2017fff17aa6856655c2cc15880eaebd790eab8a8beb3418bd85180/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6a756c69616e6775742f736c696d2d7068702d64692e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/juliangut/slim-php-di/stats)[![Monthly Downloads](https://camo.githubusercontent.com/ee6bdbdaf088d1ccf583667090bfb0fa072255ed058a804e86b7a7d4765f9c96/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646d2f6a756c69616e6775742f736c696d2d7068702d64692e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/juliangut/slim-php-di/stats)

Slim Framework PHP-DI container integration
===========================================

[](#slim-framework-php-di-container-integration)

PHP-DI dependency injection container integration for Slim framework.

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

[](#installation)

Best way to install is using [Composer](https://getcomposer.org/):

```
composer require juliangut/slim-php-di

```

Then require\_once the autoload file:

```
require_once './vendor/autoload.php';
```

Usage
-----

[](#usage)

Use `Jgut\Slim\PHPDI\ContainerBuilder` to create PHP-DI container and extract Slim's App from it

```
use Jgut\Slim\PHPDI\Configuration;
use Jgut\Slim\PHPDI\ContainerBuilder;
use Psr\Container\ContainerInterface;
use Slim\App;

$container = ContainerBuilder::build(new Configuration());

$app = $container->get(App::class);
// same as $app = \Slim\Factory\AppFactory::createFromContainer($container);

// Register your services if not provided as definitions
$container->set('service_one', function (ContainerInterface $container): ServiceOne {
    return new ServiceOne($container->get('service_two'));
});

// Set your routes

$app->run();
```

*In order to register services in the container it's way better to do it in definition files*

### Configuration

[](#configuration)

```
use Jgut\Slim\PHPDI\Configuration;
use Jgut\Slim\PHPDI\ContainerBuilder;

$settings = [
    'useAttributes' => true,
    'compilationPath' => '/path/to/compiled/container',
];
$configuration = new Configuration($settings);

// Settings can be set after creation
$configuration->setProxiesPath(sys_get_temp_dir());
$configuration->setDefinitions('/path/to/definition/files');

$container = ContainerBuilder::build($configuration);
```

#### PHP-DI settings

[](#php-di-settings)

- `useAutoWiring` whether to use auto wiring (true by default)
- `useAttributes` whether to use attributes (false by default)
- `useDefinitionCache`, whether to use definition cache (false by default)
- `wrapContainer` wrapping container (none by default)
- `proxiesPath` path where PHP-DI creates its proxy files (none by default)
- `compilationPath` path where PHP-DI creates its compiled container (none by default)

Refer to [PHP-DI documentation](http://php-di.org/doc/) to learn more about container configurations

#### Additional settings

[](#additional-settings)

- `definitions` an array of paths to definition files/directories or arrays of definitions. *Definitions are loaded in order of appearance*
- `containerClass` container class used on the build. Must implement `\Psr\Container\ContainerInterface`, `\DI\FactoryInterface` and `\DI\InvokerInterface` (`\Jgut\Slim\PHPDI\Container` by default)

Container array access shorthand
--------------------------------

[](#container-array-access-shorthand)

Default `\Jgut\Slim\PHPDI\Container` container allows shorthand array access by concatenating array keys with dots. If any key in the chain is not defined, normal `Psr\Container\NotFoundExceptionInterface` exception is thrown

```
use Jgut\Slim\PHPDI\Configuration;
use Jgut\Slim\PHPDI\ContainerBuilder;

$container = ContainerBuilder::build(new Configuration([]));

$configs = [
    'database' => [
        'dsn' => 'mysql://root:pass@localhost/my_ddbb',
    ],
];
$container->set('configs', $configs);

$container->get('configs')['database']['dsn'];
$container->get('configs.database.dsn'); // same as above
```

#### Notice

[](#notice)

Be careful though not to shadow any array key by using dots in keys themselves

```
use Jgut\Slim\PHPDI\Configuration;
use Jgut\Slim\PHPDI\ContainerBuilder;

$container = ContainerBuilder::build(new Configuration([]));

$configs = [
    'foo' => [
        'bar' => [
            'baz' => 'shadowed!', //  'bingo!',
];
$container->set('configs', $configs);

$container->get('configs.foo.bar'); // bingo!
$container->get('configs.foo.bar.baz'); // NotFoundExceptionInterface thrown
```

*The easiest way to avoid this from ever happening is by NOT using dots in array keys*

Invocation strategy
-------------------

[](#invocation-strategy)

By default, slim-php-di sets a custom invocation strategy that employs PHP-DI's Invoker to fulfill callable parameters, it lets you do things like this

```
use Jgut\Slim\PHPDI\Configuration;
use Jgut\Slim\PHPDI\ContainerBuilder;
use Psr\Http\Message\ResponseInterface;
use Slim\App;

$container = ContainerBuilder::build(new Configuration([]));

$app = $container->get(App::class);

$app->get('/hello/{name}', function (ResponseInterface $response, string $name, \PDO $connection): ResponseInterface {
    // $name will be injected from request arguments
    // $connection will be injected directly from the container

    $response->getBody()->write('Hello ' . $name);

    return $response;
});

$app->run();
```

If you prefer default Slim's `Slim\Handlers\Strategies\RequestResponse` strategy or any other of your choosing you only have to set it in a definition file

```
use Slim\Handlers\Strategies\RequestResponse;
use Slim\Interfaces\InvocationStrategyInterface;

use function DI\create;

return [
    InvocationStrategyInterface::class => create(RequestResponse::class),
];
```

Console command
---------------

[](#console-command)

```
use Symfony\Component\Console\Application;
use Jgut\Slim\PHPDI\Command\ListCommand;

/** @var \Slim\App $app */
$container = $app->getContainer();

$cli = new Application('Slim CLI');
$cli->add(new ListCommand($container));

$app->run();
```

### List container definitions

[](#list-container-definitions)

List defined container definitions supporting searching

```
php -f cli.php slim:container:list --help
```

Migration from 3.x
------------------

[](#migration-from-3x)

- PHP minimum required version is PHP 8.0
- Moved to PHP-DI 7. Annotations have been removed, use Attributes

Contributing
------------

[](#contributing)

Found a bug or have a feature request? [Please open a new issue](https://github.com/juliangut/slim-php-di/issues). Have a look at existing issues before.

See file [CONTRIBUTING.md](https://github.com/juliangut/slim-php-di/blob/master/CONTRIBUTING.md)

License
-------

[](#license)

See file [LICENSE](https://github.com/juliangut/slim-php-di/blob/master/LICENSE) included with the source code for a copy of the license terms.

###  Health Score

45

—

FairBetter than 91% of packages

Maintenance30

Infrequent updates — may be unmaintained

Popularity36

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity79

Established project with proven stability

 Bus Factor1

Top contributor holds 98.8% 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 ~115 days

Total

29

Last Release

751d ago

Major Versions

0.6 → 1.02016-02-14

1.x-dev → 2.02018-02-21

2.x-dev → 3.02019-09-09

3.x-dev → 4.02023-10-19

PHP version history (6 changes)0.1PHP &gt;=5.5

2.0PHP ^7.0

3.0PHP ^7.1

3.2PHP ^7.3|^8.0

3.3PHP ^7.4|^8.0

4.0PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/4c50421f1ab4148354dc2dd5dcaba168656b17ea913b310d112deb39a6f73ca1?d=identicon)[juliangut](/maintainers/juliangut)

---

Top Contributors

[![juliangut](https://avatars.githubusercontent.com/u/1104131?v=4)](https://github.com/juliangut "juliangut (240 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")[![nbayramberdiyev](https://avatars.githubusercontent.com/u/23094428?v=4)](https://github.com/nbayramberdiyev "nbayramberdiyev (1 commits)")

---

Tags

container-interopphp-dislimcontainerdependency-injectionslimphp-di

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/juliangut-slim-php-di/health.svg)

```
[![Health](https://phpackages.com/badges/juliangut-slim-php-di/health.svg)](https://phpackages.com/packages/juliangut-slim-php-di)
```

###  Alternatives

[pimple/pimple

Pimple, a simple Dependency Injection Container

2.7k134.5M1.4k](/packages/pimple-pimple)[aura/di

A serializable dependency injection container with constructor and setter injection, interface and trait awareness, configuration inheritance, and much more.

356990.7k60](/packages/aura-di)[elie29/zend-phpdi-config

PSR-11 PHP-DI autowire container configurator for Laminas, Mezzio, ZF2, ZF3 and Zend Expressive applications

19248.3k8](/packages/elie29-zend-phpdi-config)[infocyph/intermix

A lightweight PHP DI container, invoker, serializer, and utility toolkit.

137.7k2](/packages/infocyph-intermix)

PHPackages © 2026

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