- Add comprehensive health check system with multiple endpoints - Add Prometheus metrics endpoint - Add production logging configurations (5 strategies) - Add complete deployment documentation suite: * QUICKSTART.md - 30-minute deployment guide * DEPLOYMENT_CHECKLIST.md - Printable verification checklist * DEPLOYMENT_WORKFLOW.md - Complete deployment lifecycle * PRODUCTION_DEPLOYMENT.md - Comprehensive technical reference * production-logging.md - Logging configuration guide * ANSIBLE_DEPLOYMENT.md - Infrastructure as Code automation * README.md - Navigation hub * DEPLOYMENT_SUMMARY.md - Executive summary - Add deployment scripts and automation - Add DEPLOYMENT_PLAN.md - Concrete plan for immediate deployment - Update README with production-ready features All production infrastructure is now complete and ready for deployment.
58 lines
1.3 KiB
PHP
58 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Framework\Admin\FormFields\ValueObjects;
|
|
|
|
/**
|
|
* Field Options Value Object
|
|
*
|
|
* Holds options for select/radio/checkbox fields
|
|
*/
|
|
final readonly class FieldOptions
|
|
{
|
|
/**
|
|
* @param array<string, string> $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 .= '<option value="">' . htmlspecialchars($this->placeholder) . '</option>';
|
|
}
|
|
|
|
foreach ($this->options as $value => $label) {
|
|
$selected = ((string) $value === $selectedValue) ? ' selected' : '';
|
|
$html .= sprintf(
|
|
'<option value="%s"%s>%s</option>',
|
|
htmlspecialchars((string) $value),
|
|
$selected,
|
|
htmlspecialchars($label)
|
|
);
|
|
}
|
|
|
|
return $html;
|
|
}
|
|
|
|
/**
|
|
* Get options as array
|
|
*
|
|
* @return array<string, string>
|
|
*/
|
|
public function toArray(): array
|
|
{
|
|
return $this->options;
|
|
}
|
|
}
|