PHPackages                             cheevauva/pdic - 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. cheevauva/pdic

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

cheevauva/pdic
==============

Property Dependency Injection Container

1.1.7(5y ago)035MITPHPPHP &gt;=5.6CI failing

Since Feb 9Pushed 5y agoCompare

[ Source](https://github.com/cheevauva/PDIC)[ Packagist](https://packagist.org/packages/cheevauva/pdic)[ Docs](https://github.com/cheevauva/pdic)[ RSS](/packages/cheevauva-pdic/feed)WikiDiscussions pdic Synced 1mo ago

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

[![Build Status](https://camo.githubusercontent.com/d471e60066f830032b9a3060a8abfd7f37167e1665f484556b88cb6323a059df/68747470733a2f2f7472617669732d63692e636f6d2f6368656576617576612f504449432e7376673f6272616e63683d70646963)](https://travis-ci.com/cheevauva/PDIC)

PDIC
====

[](#pdic)

Меленький и в тоже время мощный контейнер внедрения зависимостей через публичные свойства, с использованием карты зависимостей

Установка
---------

[](#установка)

Перед тем как использовать PDIC в вашем проекте, добавьте его в файл composer.json:

```
./composer.phar require cheevauva/pdic "1.1.*"
```

Использование
-------------

[](#использование)

### Объявление сервисов

[](#объявление-сервисов)

Сервис - это объект, который что-то делает как часть более крупной системы. Примеры сервисов: подключение к базе данных, шаблонизатор или почтовая программа

```
$map = [
    '?session_storage' => SessionStorage::class,
    '?session' => Session::class,
    SessionStorage::class => [
        '^1' => '@sessionId',
    ],
    Session::class => [
        '^1' => '?session_storage'
    ],
];
$container = new \PDIC\Container($map, [
    'sessionId' => 'SESSION_ID',
]);
```

Поскольку объекты создаются только тогда, когда вы их получаете, порядок определений не имеет значения.

Использовать определенные сервисы очень просто:

```
$container->get('session');
```

Вышеупомянутый вызов примерно эквивалентен следующему коду:

```
$storage = new SessionStorage('SESSION_ID');
$session = new Session($storage);
```

### Объявление фабричных сервисов

[](#объявление-фабричных-сервисов)

По умолчанию каждый раз, когда вы получаете сервис, PDIC возвращает один и тот же ее экземпляр. Если вы хотите, чтобы для всех вызовов возвращался другой экземпляр, объявите карту зависимостей следующим образом

```
$map = [
    '?session_storage' => SessionStorage::class,
    '?session' => '*' . Session::class,
    SessionStorage::class => [
        '^1' => '@sessionId',
    ],
    Session::class => [
        '^1' => '?session_storage'
    ],
];
```

Теперь каждый вызов:

```
$container->get('session');
```

возвращает новый экземпляр Session

### Объявление параметров

[](#объявление-параметров)

Определение параметра позволяет упростить настройку сущностей в вашем контейнере. Параметры передаются при создании экземпляра контейнера:

```
$container = new \PDIC\Container([
    '?filesystem' => Filesystem::class,
    Filesystem::class => [
        '^1' => '@basePath',
    ]
], [
    'basePath' => __DIR__ . '/',
]);
```

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

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

Unknown

Total

1

Last Release

1923d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/00a1e176a7d70083d423c8847b0f4e09b629db29307171a05af940561c69b20e?d=identicon)[cheevauva](/maintainers/cheevauva)

---

Top Contributors

[![cheevauva](https://avatars.githubusercontent.com/u/1389730?v=4)](https://github.com/cheevauva "cheevauva (31 commits)")

---

Tags

dependency-injectioniocioc-containermediator-patternphppropertypsr-11psr-11-compliantservice-locator-patterncontainerdependency-injectionproperty dependency injection

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/cheevauva-pdic/health.svg)

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

###  Alternatives

[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.9M994](/packages/php-di-php-di)[aura/di

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

356968.3k58](/packages/aura-di)[acclimate/container

Provides adapters for various third-party service containers.

219390.6k15](/packages/acclimate-container)[mrclay/props-dic

Props is a simple DI container that allows retrieving values via custom property and method names

3611.7M3](/packages/mrclay-props-dic)[slince/di

A flexible dependency injection container

20260.4k6](/packages/slince-di)

PHPackages © 2026

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