. */ namespace SP\Mvc\View\Components; use JsonSerializable; /** * Class SelectItem * * @package SP\Mvc\View\Components */ final class SelectItem implements JsonSerializable { protected int|string $id; protected string $name; protected mixed $item; protected bool $selected = false; protected bool $skip = false; /** * SelectItem constructor. * * @param int|string $id * @param string $name * @param mixed $item */ public function __construct(int|string $id, string $name, mixed $item = null) { $this->id = $id; $this->name = $name; $this->item = $item; } /** * @return int|string */ public function getId(): int|string { return $this->id; } public function getName(): string { return $this->name; } public function isSelected(): bool { return $this->selected; } public function setSelected(bool $selected): void { $this->selected = $selected; } /** * @param string $property * * @return mixed */ public function getItemProperty(string $property): mixed { if (null !== $this->item) { return $this->item->{$property} ?? null; } return null; } public function isSkip(): bool { return $this->skip; } public function setSkip(bool $skip): void { $this->skip = $skip; } /** * @inheritDoc */ public function jsonSerialize(): array { return ['id' => $this->id, 'name' => $this->name]; } }