Phalcon\Di
Класс Phalcon\Di
Реализует Phalcon\DiInterface, ArrayAccess
Phalcon\Di это компонент, который реализует внедрение зависимостей / расположение служб и сам является контейнером для них.
Поскольку Phalcon сильно развязан, Phalcon\Di имеет важное значение для интеграции различных компонентов платформы. Разработчик также может использовать этот компонент для внедрения зависимостей и управления глобальными экземплярами различных классов, используемых в приложении.
В основном, этот компонент реализует инверсию схемы управления
. Применяя это, объекты не получают свои зависимости с помощью установщиков или конструкторов, но запрашивают инжектор зависимостей служб. Это уменьшает общую сложность, так как есть только один способ получить необходимые зависимости в компоненте.
Кроме того, этот шаблон повышает тестируемость кода, делая его менее подверженным ошибкам.
<?php use Phalcon\Di; use Phalcon\Http\Request; $di = new Di(); // Использование определения строки $di->set("request", Request::class, true); // Использование анонимной функции $di->setShared( "request", function () { return new Request(); } ); $request = $di->getRequest();
Методы
public __construct ()
Phalcon\Di конструктор
public setInternalEventsManager (Phalcon\Events\ManagerInterface $eventsManager)
Устанавливает внутренний менеджер событий
public getInternalEventsManager ()
Возвращает внутренний менеджер событий
public set (mixed $name, mixed $definition, [mixed $shared])
Регистрация службы в контейнере служб
public setShared (mixed $name, mixed $definition)
Регистрирует "всегда общий" в контейнер услуг
public remove (mixed $name)
Удаляет службу из контейнера служб также удаляет все общие экземпляры, созданные для службы
public attempt (mixed $name, mixed $definition, [mixed $shared])
Попытки зарегистрировать службу в контейнере служб успешны только в том случае, если служба ранее не была зарегистрирована с тем же именем
public setRaw (mixed $name, Phalcon\Di\ServiceInterface $rawDefinition)
Задает службу с помощью необработанного определения Phalcon\Di\Service
public getRaw (mixed $name)
Возвращает определение службы без разрешения
public getService (mixed $name)
Возвращает экземпляр Phalcon\Di\Service
public get (mixed $name, [mixed $parameters])
Разрешает службу на основе ее конфигурации
public mixed getShared (string $name, [array $parameters])
Разрешает службу, разрешенная служба хранится в DI, последующие запросы для этой службы вернут тот же экземпляр
public has (mixed $name)
Проверяет, содержит ли DI сервис по имени
public wasFreshInstance ()
Проверяет, является ли последняя служба, полученная через getShared, новым экземпляром или существующим
public getServices ()
Возврат услуг, зарегистрированных в DI
public offsetExists (mixed $name)
Проверка регистрации службы с помощью синтаксиса массива
public offsetSet (mixed $name, mixed $definition)
Позволяет зарегистрировать общую службу с помощью синтаксиса массива
<?php $di["request"] = new \Phalcon\Http\Request();
public offsetGet (mixed $name)
Позволяет получить общий сервис, используя синтаксис массива
<?php var_dump($di["request"]);
public offsetUnset (mixed $name)
Удаляет службу из контейнера служб с помощью синтаксиса массива
public __call (mixed $method, [mixed $arguments])
Магический метод получения или установки сервисов с помощью setters / getters
public register (Phalcon\Di\ServiceProviderInterface $provider)
Регистрация поставщика услуг.
<?php use Phalcon\DiInterface; use Phalcon\Di\ServiceProviderInterface; class SomeServiceProvider implements ServiceProviderInterface { public function register(DiInterface $di) { $di->setShared('service', function () { // ... }); } }
public static setDefault (Phalcon\DiInterface $dependencyInjector)
Установка контейнера внедрения зависимостей по умолчанию для получения статических методов
public static getDefault ()
Возврат последнего созданного DI
public static reset ()
Сбрасывает внутренний DI по умолчанию
public loadFromYaml (mixed $filePath, [array $callbacks])
Загружает службы из файла yaml.
<?php $di->loadFromYaml( "path/services.yaml", [ "!approot" => function ($value) { return dirname(__DIR__) . $value; } ] );
И сервисы могут быть указаны в файле как:
myComponent: className: \Acme\Components\MyComponent shared: true group: className: \Acme\Group arguments: - type: service name: myComponent user: className: \Acme\User
public loadFromPhp (mixed $filePath)
Загружает сервисы из конфигурационного файла php.
<?php $di->loadFromPhp("path/services.php");
И сервисы могут быть указаны в файле как:
<?php return [ 'myComponent' => [ 'className' => '\Acme\Components\MyComponent', 'shared' => true, ], 'group' => [ 'className' => '\Acme\Group', 'arguments' => [ [ 'type' => 'service', 'service' => 'myComponent', ], ], ], 'user' => [ 'className' => '\Acme\User', ], ];
protected loadFromConfig (Phalcon\Config $config)
Загружает службы из объекта Config.