$options Key-value pairs for options
* @param string|null $placeholder Optional placeholder option
*/
public function __construct(
public array $options,
public ?string $placeholder = null
) {
}
/**
* Convert options to HTML option elements
*/
public function toHtml(string $selectedValue = ''): string
{
$html = '';
if ($this->placeholder !== null) {
$html .= '';
}
foreach ($this->options as $value => $label) {
$selected = ((string) $value === $selectedValue) ? ' selected' : '';
$html .= sprintf(
'',
htmlspecialchars((string) $value),
$selected,
htmlspecialchars($label)
);
}
return $html;
}
/**
* Get options as array
*
* @return array
*/
public function toArray(): array
{
return $this->options;
}
}