Title: OptionEnum
Published: May 20, 2026

---

# class OptionEnum {}

## In this article

 * [Description](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-models-enums-optionenum/?output_format=md#description)
 * [Methods](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-models-enums-optionenum/?output_format=md#methods)
 * [Source](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-models-enums-optionenum/?output_format=md#source)
 * [Changelog](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-models-enums-optionenum/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-models-enums-optionenum/?output_format=md#wp--skip-link--target)

Enum for model options.

## 󠀁[Description](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-models-enums-optionenum/?output_format=md#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](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-models-enums-optionenum/?output_format=md#methods)󠁿

| Name | Description | 
| [OptionEnum::determineClassEnumerations](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-models-enums-optionenum/determineclassenumerations/) | Determines the class enumerations by reflecting on class constants. |

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-models-enums-optionenum/?output_format=md#source)󠁿

    ```php
    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;
        }
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/php-ai-client/src/providers/models/enums/optionenum.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/php-ai-client/src/Providers/Models/Enums/OptionEnum.php#L65)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/php-ai-client/src/Providers/Models/Enums/OptionEnum.php#L65-L107)

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wordpress-aiclient-providers-models-enums-optionenum/?output_format=md#changelog)󠁿

| Version | Description | 
| [0.1.0](https://developer.wordpress.org/reference/since/0.1.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwordpress-aiclient-providers-models-enums-optionenum%2F)
before being able to contribute a note or feedback.