Copied!

Utility class to hydrate the properties of an object.

CloneableFinalInstantiable
Methods
public static hydrate(object $instance, array $properties = [], array $scopedProperties = []) : object
 

Sets the properties of an object, including private and protected ones.

For example:

// Sets the public or protected $object->propertyName property
Hydrator::hydrate($object, ['propertyName' => $propertyValue]);

// Sets a private property defined on its parent Bar class:
Hydrator::hydrate($object, ["\0Bar\0privateBarProperty" => $propertyValue]);

// Alternative way to set the private $object->privateBarProperty property
Hydrator::hydrate($object, [], [
    Bar::class => ['privateBarProperty' => $propertyValue],
]);

Instances of ArrayObject, ArrayIterator and SplObjectStorage can be hydrated
by using the special "\0" property name to define their internal value:

// Hydrates an SplObjectStorage where $info1 is attached to $obj1, etc.
Hydrator::hydrate($object, ["\0" => [$obj1, $info1, $obj2, $info2...]]);

// Hydrates an ArrayObject populated with $inputArray
Hydrator::hydrate($object, ["\0" => [$inputArray]]);
  • template T of object
  • param \T $instance The object to hydrate
  • param array<string,mixed> $properties The properties to set on the instance
  • param array<class-string,array<string,mixed>> $scopedProperties The properties to set on the instance,
    keyed by their declaring class
  • return \T
Methods
public static hydrate(object $instance, array $properties = [], array $scopedProperties = []) : object
 

Sets the properties of an object, including private and protected ones.

For example:

// Sets the public or protected $object->propertyName property
Hydrator::hydrate($object, ['propertyName' => $propertyValue]);

// Sets a private property defined on its parent Bar class:
Hydrator::hydrate($object, ["\0Bar\0privateBarProperty" => $propertyValue]);

// Alternative way to set the private $object->privateBarProperty property
Hydrator::hydrate($object, [], [
    Bar::class => ['privateBarProperty' => $propertyValue],
]);

Instances of ArrayObject, ArrayIterator and SplObjectStorage can be hydrated
by using the special "\0" property name to define their internal value:

// Hydrates an SplObjectStorage where $info1 is attached to $obj1, etc.
Hydrator::hydrate($object, ["\0" => [$obj1, $info1, $obj2, $info2...]]);

// Hydrates an ArrayObject populated with $inputArray
Hydrator::hydrate($object, ["\0" => [$inputArray]]);
  • template T of object
  • param \T $instance The object to hydrate
  • param array<string,mixed> $properties The properties to set on the instance
  • param array<class-string,array<string,mixed>> $scopedProperties The properties to set on the instance,
    keyed by their declaring class
  • return \T
© 2023 Bruce Wells
Search Namespaces \ Classes
Configuration