Final Class Yiisoft\Hydrator\AttributeHandling\DataAttributesHandler
| Inheritance | Yiisoft\Hydrator\AttributeHandling\DataAttributesHandler |
|---|
Handles data attributes that implement {@see DataAttributeInterface}.
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\Hydrator\AttributeHandling\DataAttributesHandler | |
| handle() | Handle data attributes. | Yiisoft\Hydrator\AttributeHandling\DataAttributesHandler |
Method Details
| public mixed __construct ( Yiisoft\Hydrator\AttributeHandling\ResolverFactory\AttributeResolverFactoryInterface $attributeResolverFactory ) | ||
| $attributeResolverFactory | Yiisoft\Hydrator\AttributeHandling\ResolverFactory\AttributeResolverFactoryInterface | |
public function __construct(
private AttributeResolverFactoryInterface $attributeResolverFactory,
) {
}
Handle data attributes.
| public Yiisoft\Hydrator\DataInterface handle ( ReflectionClass $reflectionClass, Yiisoft\Hydrator\DataInterface $data ) | ||
| $reflectionClass | ReflectionClass |
Reflection of class to attributes handle. |
| $data | Yiisoft\Hydrator\DataInterface |
Current data object ({@see \Yiisoft\Hydrator\DataInterface}). |
public function handle(ReflectionClass $reflectionClass, DataInterface $data): DataInterface
{
$reflectionAttributes = $reflectionClass->getAttributes(
DataAttributeInterface::class,
ReflectionAttribute::IS_INSTANCEOF
);
foreach ($reflectionAttributes as $reflectionAttribute) {
$attribute = $reflectionAttribute->newInstance();
$resolver = $this->attributeResolverFactory->create($attribute);
if (!$resolver instanceof DataAttributeResolverInterface) {
throw new RuntimeException(
sprintf(
'Data attribute resolver "%s" must implement "%s".',
get_debug_type($resolver),
DataAttributeResolverInterface::class,
),
);
}
$data = $resolver->prepareData($attribute, $data);
}
return $data;
}
Signup or Login in order to comment.