table = $table; return $this; } public function getTable(): string { return $this->table; } public function setDescription(string $description): self { $this->description = $description; return $this; } public function getDescription(): string { return $this->description; } public function setNotes(array $notes): self { $this->notes = $notes; return $this; } public function getNotes(): array { return $this->notes; } public function definition(): string { return json_encode($this->jsonSerialize(), JSON_UNESCAPED_SLASHES); } public function import(array $data): self { return $this->setTable($data['table'] ?? '') ->setDescription($data['description'] ?? '') ->setNotes($data['notes'] ?? []); } public function jsonSerialize(): array { return [ 'class' => get_class($this), 'table' => $this->getTable(), 'description' => $this->getDescription(), 'notes' => $this->getNotes(), ]; } }