Files
rspade_system/vendor/sebastian/object-enumerator/src/Enumerator.php
root f6fac6c4bc Fix bin/publish: copy docs.dist from project root
Fix bin/publish: use correct .env path for rspade_system
Fix bin/publish script: prevent grep exit code 1 from terminating script

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-21 02:08:33 +00:00

69 lines
1.8 KiB
PHP
Executable File

<?php declare(strict_types=1);
/*
* This file is part of sebastian/object-enumerator.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\ObjectEnumerator;
use function array_merge;
use function is_array;
use function is_object;
use SebastianBergmann\ObjectReflector\ObjectReflector;
use SebastianBergmann\RecursionContext\Context;
final class Enumerator
{
/**
* @psalm-return list<object>
*/
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;
}
}