AbstractEnum::determineClassEnumerations( WordPressAiClientCommonclass-string $className ): WordPressAiClientCommonarray<string,

Determines the class enumerations by reflecting on class constants.

Description

This method can be overridden by subclasses to customize how enumerations are determined (e.g., to add dynamic constants).

Parameters

$classNameWordPressAiClientCommonclass-stringrequired
The fully qualified class name.

Return

WordPressAiClientCommonarray<string, string> Map of constant names to values.

Source

protected static function determineClassEnumerations(string $className): array
{
    $reflection = new ReflectionClass($className);
    $constants = $reflection->getConstants();
    // Validate all constants
    $enumConstants = [];
    foreach ($constants as $name => $value) {
        // Check if constant name follows uppercase snake_case pattern
        if (!preg_match('/^[A-Z][A-Z0-9_]*$/', $name)) {
            throw new RuntimeException(sprintf('Invalid enum constant name "%s" in %s. Constants must be UPPER_SNAKE_CASE.', $name, $className));
        }
        // Check if value is valid type
        if (!is_string($value)) {
            throw new RuntimeException(sprintf('Invalid enum value type for constant %s::%s. ' . 'Only string values are allowed, %s given.', $className, $name, gettype($value)));
        }
        $enumConstants[$name] = $value;
    }
    return $enumConstants;
}

Changelog

VersionDescription
0.1.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.