Класс 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