Enum for model options.
Description
This enum dynamically includes all options from ModelConfig KEY_* constants in addition to the explicitly defined constants below.
Explicitly defined option (not in ModelConfig):
Methods
| Name | Description |
|---|---|
| OptionEnum::determineClassEnumerations | Determines the class enumerations by reflecting on class constants. |
Source
class OptionEnum extends AbstractEnum
{
/**
* Input modalities option.
*
* This constant is not in ModelConfig as it's derived from message content,
* not configured directly.
*/
public const INPUT_MODALITIES = 'input_modalities';
/**
* Determines the class enumerations by reflecting on class constants.
*
* Overrides the parent method to dynamically add constants from ModelConfig
* that are prefixed with KEY_. These are transformed to remove the KEY_ prefix
* and converted to snake_case values.
*
* @since 0.1.0
*
* @param class-string $className The fully qualified class name.
* @return array<string, string> The enum constants.
*/
protected static function determineClassEnumerations(string $className): array
{
// Start with the constants defined in this class using parent method
$constants = parent::determineClassEnumerations($className);
// Use reflection to get all constants from ModelConfig
$modelConfigReflection = new ReflectionClass(ModelConfig::class);
$modelConfigConstants = $modelConfigReflection->getConstants();
// Add ModelConfig constants that start with KEY_
foreach ($modelConfigConstants as $constantName => $constantValue) {
if (str_starts_with($constantName, 'KEY_')) {
// Remove KEY_ prefix to get the enum constant name
$enumConstantName = substr($constantName, 4);
// The value is the snake_case version stored in ModelConfig
// ModelConfig already stores these as snake_case strings
if (is_string($constantValue)) {
$constants[$enumConstantName] = $constantValue;
}
}
}
return $constants;
}
}
Changelog
| Version | Description |
|---|---|
| 0.1.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.