Гидратор использует реализацию AttributeResolverFactoryInterface
для создания обработчиков атрибутов.
Пакет предоставляет две реализации из коробки:
ReflectionAttributeResolverFactory
. Использует рефлексию для создания обработчика атрибута и может создавать обработчики только без зависимостей.ContainerAttributeResolverFactory
. Использует совместимый с PSR-11 DI-контейнер для создания обработчика атрибутов
Используемая по-умолчанию фабрика зависит от среды. Когда пакет гидратора работает внутри экосистемы Yii (приложение использует Yii Config) используется ContainerAttributeResolverFactory
. В других случаях используется ReflectionAttributeResolverFactory
.
Чтобы использовать фабрику обработчиков атрибутов, отличную от стандартной, передайте ее в конструктор гидратора:
use Yiisoft\Hydrator\AttributeHandling\ResolverFactory\ContainerAttributeResolverFactory;
/**
* @var Psr\Container\ContainerInterface $container
*/
$attributeResolverFactory = new ContainerAttributeResolverFactory($container);
$hydrator = new Hydrator(
attributeResolverFactory: $attributeResolverFactory,
// ...
);