*/ final readonly class RangeDto implements Arrayable, UrlRoutable { public function __construct( public int $id, public string $name, public string $slug, public ?string $description, public ?string $picture, public string $picture_alt, public string $picture_title, public int $order, public bool $status, ) { } public static function fromModel(Range $range): self { return new self( id: $range->id, name: $range->name, slug: $range->slug, description: $range->description, picture: is_string($range->picture) ? $range->picture : null, picture_alt: $range->picture_alt, picture_title: $range->picture_title, order: $range->order, status: $range->status, ); } #[\Override] public function getRouteKey(): mixed { return $this->slug; } #[\Override] public function getRouteKeyName(): string { return 'slug'; } #[\Override] public function resolveRouteBinding($value, $field = null): mixed { return null; } #[\Override] public function resolveChildRouteBinding($childType, $value, $field): mixed { return null; } /** * @return array */ #[\Override] public function toArray(): array { return [ 'id' => $this->id, 'name' => $this->name, 'slug' => $this->slug, 'description' => $this->description, 'picture' => $this->picture, 'picture_alt' => $this->picture_alt, 'picture_title' => $this->picture_title, 'order' => $this->order, 'status' => $this->status, ]; } }