DataClassFactory
class DataClassFactory
Methods
Create a new data class factory.
Build constructor parameter metadata keyed by parameter name.
Get constructor parameters resolved from contextual attributes.
Get public, non-static data properties keyed by name.
Get the constructor parameters that receive raw input without a public data property.
Build data properties and their selected iterable annotations.
Determine if any declaration can use iterable item metadata.
Determine if a native type can use iterable item metadata.
Resolve nearest class-level iterable annotations across inheritance.
Build named creation method metadata in declaration order.
Compile user-owned creation lifecycle method presence.
Validate mapping ownership and build the output reverse map.
Resolve a fixed construction recipe for an eligible declaration.
Determine if resolved recipe values can be spread directly into the constructor.
Resolve a fixed transformation recipe for an eligible declaration.
Determine if declared values can be copied directly during transformation.
Details
at line 60
__construct(DataPropertyFactory $propertyFactory, DataMethodFactory $methodFactory, DataParameterFactory $parameterFactory, DataIterableAnnotationReader $iterableAnnotationReader, NameMapperResolver $nameMapperResolver, DataConfig $config)
Create a new data class factory.
at line 75
DataClass
build(ReflectionClass $reflectionClass)
Build immutable metadata for a data class.
at line 183
protected array
resolveConstructorParameters(ReflectionClass $reflectionClass, ReflectionMethod|null $constructor)
Build constructor parameter metadata keyed by parameter name.
at line 206
protected array
resolveContextualParameters(array $parameters)
Get constructor parameters resolved from contextual attributes.
at line 226
protected array
resolveReflectionProperties(ReflectionClass $reflectionClass)
Get public, non-static data properties keyed by name.
at line 249
protected array
resolveConstructorInputs(array $parameters, array $properties)
Get the constructor parameters that receive raw input without a public data property.
These are non-promoted parameters without a matching property. A non-public promoted parameter is the object's own state, so input never reaches it, as in Spatie.
at line 275
protected array
resolveProperties(string $class, ReflectionClass $reflectionClass, array $reflectionProperties, ReflectionMethod|null $constructor, array $constructorParameters, NameMapper|null $classInputNameMapper, NameMapper|null $classOutputNameMapper, ReflectionAttribute|null $classAutoLazy)
Build data properties and their selected iterable annotations.
at line 365
protected bool
hasIterableAnnotationCandidate(iterable $declarations)
Determine if any declaration can use iterable item metadata.
at line 379
protected bool
typeCanUseIterableAnnotation(ReflectionType|null $type)
Determine if a native type can use iterable item metadata.
at line 418
protected array
resolveClassAnnotations(ReflectionClass $reflectionClass)
Resolve nearest class-level iterable annotations across inheritance.
at line 446
protected array
resolveMethods(ReflectionClass $reflectionClass)
Build named creation method metadata in declaration order.
at line 475
protected array
resolveLifecycleMethods(ReflectionClass $reflectionClass)
Compile user-owned creation lifecycle method presence.
at line 514
protected array
validateMappings(string $class, array $properties)
Validate mapping ownership and build the output reverse map.
at line 574
protected DataCreationRecipe|null
resolveCreationRecipe(ReflectionClass $reflectionClass, array $contextualParameters, array $constructorInputs, array $properties, array $lifecycleMethods, bool $propertyMorphable)
Resolve a fixed construction recipe for an eligible declaration.
at line 617
protected bool
supportsDirectConstructorInstantiation(ReflectionClass $reflectionClass, ReflectionMethod|null $constructor, array $constructorParameters, array $contextualParameters, array $constructorInputs, array $properties)
Determine if resolved recipe values can be spread directly into the constructor.
at line 654
protected DataTransformationRecipe|null
resolveTransformationRecipe(array $properties)
Resolve a fixed transformation recipe for an eligible declaration.
at line 685
protected bool
supportsBulkCopyTransformation(array $properties)
Determine if declared values can be copied directly during transformation.