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

Breadcrumb

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

function Enumerator::enumerate

@psalm-return list<object>

File

vendor/sebastian/object-enumerator/src/Enumerator.php, line 23

Class

Enumerator

Namespace

SebastianBergmann\ObjectEnumerator

Code

public function enumerate(array|object $variable, Context $processed = new Context()) : array {
    $objects = [];
    if ($processed->contains($variable)) {
        return $objects;
    }
    $array = $variable;
    
    /* @noinspection UnusedFunctionResultInspection */
    $processed->add($variable);
    if (is_array($variable)) {
        foreach ($array as $element) {
            if (!is_array($element) && !is_object($element)) {
                continue;
            }
            
            /** @noinspection SlowArrayOperationsInLoopInspection */
            $objects = array_merge($objects, $this->enumerate($element, $processed));
        }
        return $objects;
    }
    $objects[] = $variable;
    foreach ((new ObjectReflector())->getProperties($variable) as $value) {
        if (!is_array($value) && !is_object($value)) {
            continue;
        }
        
        /** @noinspection SlowArrayOperationsInLoopInspection */
        $objects = array_merge($objects, $this->enumerate($value, $processed));
    }
    return $objects;
}
RSS feed
Powered by Drupal