Classes/Console/Database/Schema/SchemaUpdateType.php
public static function expandSchemaUpdateTypes(array $schemaUpdateTypes)
    {
        $expandedSchemaUpdateTypes = [];
        $schemaUpdateTypeConstants = array_values(self::getConstants());

        // Collect total list of types by expanding wildcards
        foreach ($schemaUpdateTypes as $schemaUpdateType) {
            if (in_array($schemaUpdateType, ['*', 'safe', 'destructive'], true)) {
                if (empty(self::$schemaUpdateTypesStatementTypesMapping[$schemaUpdateType])) {
                    throw new InvalidEnumerationValueException(
                        sprintf(
                            'Invalid schema update type "%s", must be one of: "%s"',
                            $schemaUpdateType,
                            implode('", "', $schemaUpdateTypeConstants)
                        ),
                        1477998197
                    );
                }
                foreach (self::$schemaUpdateTypesStatementTypesMapping[$schemaUpdateType] as $matchedType) {
                    $expandedSchemaUpdateTypes[] = $matchedType;
                }
            } elseif (strpos($schemaUpdateType, '*') !== false) {
                $matchPattern = '/' . str_replace('\\*', '.+', preg_quote($schemaUpdateType, '/')) . '/';
                $matchingSchemaUpdateTypes = preg_grep($matchPattern, $schemaUpdateTypeConstants);
                if (empty($matchingSchemaUpdateTypes)) {
                    throw new InvalidEnumerationValueException(
                        sprintf(
                            'Invalid schema update type "%s", must be one of: "%s"',
                            $schemaUpdateType,
                            implode('", "', $schemaUpdateTypeConstants)
                        ),
                        1477998245
                    );
                }
                foreach ($matchingSchemaUpdateTypes as $matchingSchemaUpdateType) {
                    $expandedSchemaUpdateTypes[] = $matchingSchemaUpdateType;
                }
            } else {
                $expandedSchemaUpdateTypes[] = $schemaUpdateType;
            }
        }
        $expandedSchemaUpdateTypes = array_unique($expandedSchemaUpdateTypes);
        // Cast to enumeration objects to ensure valid values
        foreach ($expandedSchemaUpdateTypes as &$schemaUpdateType) {
            try {
                $schemaUpdateType = self::cast($schemaUpdateType);
            } catch (InvalidEnumerationValueException $e) {
                throw new InvalidEnumerationValueException(
                    sprintf(
                        'Invalid schema update type "%s", must be one of: "%s"',
                        $schemaUpdateType,
                        implode('", "', $schemaUpdateTypeConstants)
                    ),
                    1439460396,
                    $e
                );
            }
        }

        return $expandedSchemaUpdateTypes;
    }
public static function expandSchemaUpdateTypes(array $schemaUpdateTypes)
    {
        $expandedSchemaUpdateTypes = [];
        $schemaUpdateTypeConstants = array_values(self::getConstants());

        // Collect total list of types by expanding wildcards
        foreach ($schemaUpdateTypes as $schemaUpdateType) {
            if (in_array($schemaUpdateType, ['*', 'safe', 'destructive'], true)) {
                if (empty(self::$schemaUpdateTypesStatementTypesMapping[$schemaUpdateType])) {
                    throw new InvalidEnumerationValueException(
                        sprintf(
                            'Invalid schema update type "%s", must be one of: "%s"',
                            $schemaUpdateType,
                            implode('", "', $schemaUpdateTypeConstants)
                        ),
                        1477998197
                    );
                }
                foreach (self::$schemaUpdateTypesStatementTypesMapping[$schemaUpdateType] as $matchedType) {
                    $expandedSchemaUpdateTypes[] = $matchedType;
                }
            } elseif (strpos($schemaUpdateType, '*') !== false) {
                $matchPattern = '/' . str_replace('\\*', '.+', preg_quote($schemaUpdateType, '/')) . '/';
                $matchingSchemaUpdateTypes = preg_grep($matchPattern, $schemaUpdateTypeConstants);
                if (empty($matchingSchemaUpdateTypes)) {
                    throw new InvalidEnumerationValueException(
                        sprintf(
                            'Invalid schema update type "%s", must be one of: "%s"',
                            $schemaUpdateType,
                            implode('", "', $schemaUpdateTypeConstants)
                        ),
                        1477998245
                    );
                }
                foreach ($matchingSchemaUpdateTypes as $matchingSchemaUpdateType) {
                    $expandedSchemaUpdateTypes[] = $matchingSchemaUpdateType;
                }
            } else {
                $expandedSchemaUpdateTypes[] = $schemaUpdateType;
            }
        }
        $expandedSchemaUpdateTypes = array_unique($expandedSchemaUpdateTypes);
        // Cast to enumeration objects to ensure valid values
        foreach ($expandedSchemaUpdateTypes as &$schemaUpdateType) {
            try {
                $schemaUpdateType = self::cast($schemaUpdateType);
            } catch (InvalidEnumerationValueException $e) {
                throw new InvalidEnumerationValueException(
                    sprintf(
                        'Invalid schema update type "%s", must be one of: "%s"',
                        $schemaUpdateType,
                        implode('", "', $schemaUpdateTypeConstants)
                    ),
                    1439460396,
                    $e
                );
            }
        }

        return $expandedSchemaUpdateTypes;
    }
Expands wildcards in schema update types, e.g. field.* or *.change

@param array $schemaUpdateTypes List of schema update types
@throws InvalidEnumerationValueException If an invalid schema update type was passed
@return SchemaUpdateType[]