Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ClassStructureSniff.php

function ClassStructureSniff::getNormalizedGroups

*

Return value

array<string, int>

1 call to ClassStructureSniff::getNormalizedGroups()
ClassStructureSniff::process in vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/Classes/ClassStructureSniff.php
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint *

File

vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/Classes/ClassStructureSniff.php, line 553

Class

ClassStructureSniff

Namespace

SlevomatCodingStandard\Sniffs\Classes

Code

private function getNormalizedGroups() : array {
    if ($this->normalizedGroups === null) {
        $supportedGroups = [
            self::GROUP_USES,
            self::GROUP_ENUM_CASES,
            self::GROUP_PUBLIC_CONSTANTS,
            self::GROUP_PROTECTED_CONSTANTS,
            self::GROUP_PRIVATE_CONSTANTS,
            self::GROUP_PUBLIC_PROPERTIES,
            self::GROUP_PUBLIC_STATIC_PROPERTIES,
            self::GROUP_PROTECTED_PROPERTIES,
            self::GROUP_PROTECTED_STATIC_PROPERTIES,
            self::GROUP_PRIVATE_PROPERTIES,
            self::GROUP_PRIVATE_STATIC_PROPERTIES,
            self::GROUP_PUBLIC_STATIC_FINAL_METHODS,
            self::GROUP_PUBLIC_STATIC_ABSTRACT_METHODS,
            self::GROUP_PROTECTED_STATIC_FINAL_METHODS,
            self::GROUP_PROTECTED_STATIC_ABSTRACT_METHODS,
            self::GROUP_PUBLIC_FINAL_METHODS,
            self::GROUP_PUBLIC_ABSTRACT_METHODS,
            self::GROUP_PROTECTED_FINAL_METHODS,
            self::GROUP_PROTECTED_ABSTRACT_METHODS,
            self::GROUP_CONSTRUCTOR,
            self::GROUP_STATIC_CONSTRUCTORS,
            self::GROUP_DESTRUCTOR,
            self::GROUP_PUBLIC_METHODS,
            self::GROUP_PUBLIC_STATIC_METHODS,
            self::GROUP_PROTECTED_METHODS,
            self::GROUP_PROTECTED_STATIC_METHODS,
            self::GROUP_PRIVATE_METHODS,
            self::GROUP_PRIVATE_STATIC_METHODS,
            self::GROUP_MAGIC_METHODS,
        ];
        $normalizedGroupsWithShortcuts = [];
        $order = 1;
        foreach (SniffSettingsHelper::normalizeArray($this->groups) as $groupsString) {
            
            /** @var list<string> $groups */
            $groups = preg_split('~\\s*,\\s*~', strtolower($groupsString));
            foreach ($groups as $groupOrShortcut) {
                $groupOrShortcut = preg_replace('~\\s+~', ' ', $groupOrShortcut);
                if (!in_array($groupOrShortcut, $supportedGroups, true) && !array_key_exists($groupOrShortcut, self::SHORTCUTS)) {
                    throw new UnsupportedClassGroupException($groupOrShortcut);
                }
                $normalizedGroupsWithShortcuts[$groupOrShortcut] = $order;
            }
            $order++;
        }
        $normalizedGroups = [];
        foreach ($normalizedGroupsWithShortcuts as $groupOrShortcut => $groupOrder) {
            if (in_array($groupOrShortcut, $supportedGroups, true)) {
                $normalizedGroups[$groupOrShortcut] = $groupOrder;
            }
            else {
                foreach ($this->unpackShortcut($groupOrShortcut, $supportedGroups) as $group) {
                    if (array_key_exists($group, $normalizedGroupsWithShortcuts) || array_key_exists($group, $normalizedGroups)) {
                        continue;
                    }
                    $normalizedGroups[$group] = $groupOrder;
                }
            }
        }
        if ($normalizedGroups === []) {
            $normalizedGroups = array_flip($supportedGroups);
        }
        else {
            $missingGroups = array_diff($supportedGroups, array_keys($normalizedGroups));
            if ($missingGroups !== []) {
                throw new MissingClassGroupsException($missingGroups);
            }
        }
        $this->normalizedGroups = $normalizedGroups;
    }
    return $this->normalizedGroups;
}
RSS feed
Powered by Drupal