name: Hydrator class_comment: null dependencies: - name: InternalHydrator type: class source: Symfony\Component\VarExporter\Internal\Hydrator properties: [] methods: - name: hydrate visibility: public parameters: - name: instance - name: properties default: '[]' - name: scopedProperties default: '[]' comment: '# * Utility class to hydrate the properties of an object. # * # * @author Nicolas Grekas # */ # final class Hydrator # { # /** # * 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 $properties The properties to set on the instance # * @param array> $scopedProperties The properties to set on the instance, # * keyed by their declaring class # * # * @return T' traits: [] interfaces: []