function HookCollectorPass::applyOrderOperations

Applies order operations to a hook implementation list.

Parameters

array<string, string> $implementation_list: Implementation list for one hook, as module names keyed by "$class::$method" identifiers.

list<\Drupal\Core\Hook\OrderOperation\OrderOperation> $order_operations: A list of order operations for one hook.

1 call to HookCollectorPass::applyOrderOperations()
HookCollectorPass::calculateImplementations in core/lib/Drupal/Core/Hook/HookCollectorPass.php
Calculates the ordered implementations.

File

core/lib/Drupal/Core/Hook/HookCollectorPass.php, line 282

Class

HookCollectorPass
Collects and registers hook implementations.

Namespace

Drupal\Core\Hook

Code

protected static function applyOrderOperations(array &$implementation_list, array $order_operations) : void {
    $module_finder = $implementation_list;
    $identifiers = array_keys($module_finder);
    foreach ($order_operations as $order_operation) {
        $order_operation->apply($identifiers, $module_finder);
        assert($identifiers === array_unique($identifiers));
        assert(array_is_list($identifiers));
        assert(!array_diff($identifiers, array_keys($module_finder)));
        assert(!array_diff(array_keys($module_finder), $identifiers));
    }
    // Rebuild the identifier -> module array with the new order.
    $identifiers = array_combine($identifiers, $identifiers);
    $identifiers = array_intersect_key($identifiers, $module_finder);
    $implementation_list = array_replace($identifiers, $module_finder);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.