Spec-Zone.ru › Phalcon 2

Класс Phalcon\DI

реализует Phalcon\DiInterface

Phalcon\DI — это компонент, реализующий зависимость инъекции/местоположения сервисов, и сам является контейнером для них. Поскольку Phalcon высоко декомпозирован, Phalcon\DI необходим для интеграции различных компонентов фреймворка. Разработчик также может использовать этот компонент для инъекции зависимостей и управления глобальными экземплярами различных классов, используемых в приложении. В основном, этот компонент реализует шаблон Инверсия управления. Применяя это, объекты не получают свои зависимости с помощью сетеров или конструкторов, а запрашивают у инъектора зависимостей сервиса. Это снижает общую сложность, поскольку существует только один способ получения необходимых зависимостей в компоненте. Кроме того, этот шаблон повышает тестируемость кода, что делает его менее подверженным ошибкам.

$di = new Phalcon\DI();

 //Using a string definition
 $di->set('request', 'Phalcon\Http\Request', true);

 //Using an anonymous function
 $di->set('request', function(){
  return new Phalcon\Http\Request();
 }, true);

 $request = $di->getRequest();

Методы

public __construct ()

Конструктор Phalcon\DI

public Phalcon\DI\ServiceInterface set (string $name, mixed $definition, [boolean $shared])

Регистрирует сервис в контейнере сервисов

public remove (string $name)

Удаляет сервис из контейнера сервисов

public mixed getRaw (string $name)

Возвращает определение сервиса без разрешения

public Phalcon\DI\ServiceInterface getService (string $name)

Возвращает экземпляр Phalcon\DI\Service

public Phalcon\DI\ServiceInterface setService (Phalcon\DI\ServiceInterface $rawDefinition)

Устанавливает сервис с помощью определения Phalcon\DI\Service

public mixed get (string $name, [array $parameters])

Разрешает сервис на основе его конфигурации

public mixed getShared (string $name, [array $parameters])

Разрешает сервис; разрешённый сервис хранится в DI, последующие запросы к этому сервису вернут тот же экземпляр

public boolean has (string $name)

Проверяет, содержит ли DI сервис по имени

public boolean wasFreshInstance ()

Проверяет, был ли последний сервис, полученный через getShared, новым экземпляром или существующим

public Phalcon\DI\Service [] getServices ()

Возвращает зарегистрированные в DI сервисы

public static setDefault (Phalcon\DiInterface $dependencyInjector)

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

public static Phalcon\DiInterface getDefault ()

Возвращает последний созданный DI

public static reset ()

Сбрасывает внутренний DI по умолчанию

public Phalcon\DI\ServiceInterface attempt (string $name, mixed $definition, [boolean $shared])

Попытка регистрации сервиса в контейнере сервисов. Успешна только если сервис ранее не был зарегистрирован с тем же именем

public Phalcon\DI\ServiceInterface setShared (string $name, mixed $definition)

Регистрирует сервис «всегда общий» в контейнере сервисов

public setRaw (unknown $rawDefinition)

...

public boolean offsetExists (unknown $property)

Проверяет, зарегистрирован ли сервис с использованием синтаксиса массива. Псевдоним для Phalcon\Di::has()

public offsetSet (unknown $property, unknown $value)

Позволяет зарегистрировать общий сервис с использованием синтаксиса массива. Псевдоним для Phalcon\Di::setShared()

$di['request'] = new Phalcon\Http\Request();

public mixed offsetGet (unknown $property)

Позволяет получить общий сервис с использованием синтаксиса массива. Псевдоним для Phalcon\Di::getShared()

var_dump($di['request']);

public offsetUnset (unknown $property)

Удаляет сервис из контейнера сервисов с использованием синтаксиса массива. Псевдоним для Phalcon\Di::remove()

public mixed __call (string $method, [array $arguments])

Магический метод для получения или установки сервисов с помощью сетеров/геттеров

public __clone ()

...

© 2011–2016 Phalcon Framework Team
Licensed under the Creative Commons Attribution License 3.0.
https://docs.phalconphp.com/en/2.0.0/api/Phalcon_DI.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API