Skip to content

Latest commit

 

History

History
54 lines (42 loc) · 1.44 KB

general-usage.md

File metadata and controls

54 lines (42 loc) · 1.44 KB

Общее использование

Заполнение существующего объекта:

use Yiisoft\Hydrator\Hydrator;

$hydrator = new Hydrator();
$hydrator->hydrate($object, $data);

Создание нового объекта и заполнение его данными:

use Yiisoft\Hydrator\Hydrator;

$hydrator = new Hydrator();
$object = $hydrator->create(MyClass::class, $data);

Для передачи аргументов в конструктор вложенного объекта используйте вложенный массив или запись «через точку»:

final class Engine
{
    public function __construct(
        private string $name,
    ) {}
}

final class Car
{
    public function __construct(
        private string $name,
        private Engine $engine,
    ) {}
}

// вложенный массив
$object = $hydrator->create(Car::class, [
    'name' => 'Ferrari',
    'engine' => [
        'name' => 'V8',
    ]
]);

// или через точку
$object = $hydrator->create(Car::class, [
    'name' => 'Ferrari',
    'engine.name' => 'V8',
]);

В примере выше в name передается аргумент конструктора объекта Car и создается новый объект Engine для аргумента engine, куда передается значение V8 как аргумент name конструктора.