To hydrate existing object:
use Yiisoft\Hydrator\Hydrator;
$hydrator = new Hydrator();
$hydrator->hydrate($object, $data);
To create a new object and fill it with the data:
use Yiisoft\Hydrator\Hydrator;
$hydrator = new Hydrator();
$object = $hydrator->create(MyClass::class, $data);
To pass arguments to the constructor of a nested object, use nested array or dot-notation:
final class Engine
{
public function __construct(
private string $name,
) {}
}
final class Car
{
public function __construct(
private string $name,
private Engine $engine,
) {}
}
// nested array
$object = $hydrator->create(Car::class, [
'name' => 'Ferrari',
'engine' => [
'name' => 'V8',
]
]);
// or dot-notation
$object = $hydrator->create(Car::class, [
'name' => 'Ferrari',
'engine.name' => 'V8',
]);
That would pass the name
constructor argument of the Car
object and create a new Engine
object for engine
argument passing V8
as the name
argument to its constructor.