2017 © Pedro Peláez
 

library container

Simple dependency injection container (Простое внедрение зависимостей)

image

cheevauva/container

Simple dependency injection container (Простое внедрение зависимостей)

  • Saturday, April 16, 2016
  • by cheevauva
  • Repository
  • 0 Watchers
  • 0 Stars
  • 3 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Build Status, (*1)

PDIC

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

Установка

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

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

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

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

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

$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',
]);

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

Использовать определенные сервисы очень просто:, (*6)

$container->get('session');

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

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

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

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

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

Теперь каждый вызов:, (*9)

$container->get('session');

возвращает новый экземпляр Session, (*10)

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

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

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

The Versions

16/04 2016

1.x-dev

1.9999999.9999999.9999999-dev https://github.com/cheevauva/container

Simple dependency injection container (Простое внедрение зависимостей)

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

The Development Requires

by Fedor Kazin

dependency injection container

10/04 2016

dev-master

9999999-dev https://github.com/cheevauva/container

Simple dependency injection container (Простое внедрение зависимостей)

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

The Development Requires

by Fedor Kazin

dependency injection container