Download the PHP package fi1a/dependency-injection without Composer
On this page you can find all versions of the php package fi1a/dependency-injection. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download fi1a/dependency-injection
More information about fi1a/dependency-injection
Files in fi1a/dependency-injection
Package dependency-injection
Short Description Dependency injection container
License MIT
Homepage https://github.com/fi1a/dependency-injection
Informations about the package dependency-injection
Dependency injection container
Контейнер dependency injection, может разрешать зависимости, создавать экземпляры и настраивать классы. Поддерживает внедрение конструктора, свойств и методов.
Установка
Установить этот пакет можно как зависимость, используя Composer.
Использование контейнера
Для использования контейнера dependency injection, сначала необходимо в конфигурацию задать определения созданное с помощью builder'а.
Название определения обычно является именем интерфейса. Когда запрашивается тип для создания объекта, будет использоваться это определение.
Это происходит при вызове метода get
непосредственно из контейнера. Объекты также создаются не явно при разрешении зависимостей.
Объект может быть определен несколькими способами:
- defineClass - сопоставление с конкретным классом;
- defineFactory - если реализация сложная и может быть лучше описана в коде, то следует использовать фабричный метод. При использовании фабричного метода, зависимости в аргументах автоматически разрешаются.
- defineObject - вернуть созданный экземпляр объекта.
Также доступны следующие определения:
- defineConstructor - задает аргументы для конструктора класса определенного как defineClass;
- defineProperty - задает значение свойства объекта;
- defineProperties - задает ассоциативный массив со значениями свойств объекта;
- defineMethod - задает метод объекта, который необходимо вызвать с объявленными аргументами;
- defineMethods - задает ассоциативный массив с методами объекта, которые необходимо вызвать с объявленными аргументами.
При отсутствии определения для запрашиваемого типа, контейнер выбросит исключение Fi1a\DI\Exceptions\NotFoundException
.
defineClass
Сопоставление с конкретным классом, определение аргументов конструктора, задание свойств и вызов методов:
defineFactory
Используется замыкание как фабричный метод:
Использование фабричного метода в классе:
defineObject
Использовать уже созданный экземпляр объекта:
Хелпер di
Доступен хелпер di()
, возвращающий один экземпляр контейнера для регистрации опредлений в других пакетах.
Создание определения из массива
Для создания определения из массива можно воспользоваться методом buildFromArray
класса реализующего интерфейс Fi1a\DI\ArrayBuilderInterface
:
Преобразование определения и коллекций в массив
Для преобразования определений и коллекций в массив, можно воспользоваться методом definition
, или collection
класса реализующего интерфейс Fi1a\DI\ToArrayInterface
: