Skip to content

Expose PropertyHydrationDefinition to PropertyCaster::cast() to access inferred type #68

@JRoblesAtQuadrant

Description

@JRoblesAtQuadrant

I've got a model, that uses several VO properties, using a ValueObjectInterface.

Trying to create a generic PropertyCaster, CastToValueObjectInterface, I miss the concrete Attribute target (the property on whom is applied) to hydrate the property without need to explicity add the class to be hydrated on the attribute

class Name implements ValueObject {
     public function from(mixed $value): self
}

final readonly class Model {
    #[CastAsValueObject]
    public Name $name
}

readonly class CastToValueObjectInterface implements PropertyCaster {
    public function cast(mixed $value, ObjectMapper $hydrator, PropertyHydrationDefinition $context=null): mixed
    {
        if (!$context?->firstTypeName instanceOf ValueObject)
            throw \InvalidArgumentException("Annotated property does not implement ValueObject");
            
       return ($context->firstTypeName)::from($value);
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions