id = $id; $this->address = $address; $this->items = $items; } } final class Preferences { public function __construct(public string $name, public ?string $note, public bool $active = false) {} } final class Team { public function __construct(public int $id, public string $name) {} /** @var Member[] */ public array $members = []; } final class Member { public function __construct(public int $id, public string $name) {} public ?Team $team = null; } final class TreeNode { public function __construct(public string $name) {} #[MaxDepth(1)] public ?TreeNode $child = null; } final class Signup { public function __construct( #[Assert\NotBlank] #[Assert\Length(min: 2, max: 60)] public string $name, #[Assert\Email] #[Assert\NotBlank] public string $email, #[Assert\Range(min: 18, max: 120)] public int $age, #[Assert\IsTrue(message: 'Нужно принять условия учебной формы.')] public bool $consent = false ) {} }