# sebastianbergmann/object-enumerator

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/sebastianbergmann-object-enumerator).**

6,537 stars · 9 forks · PHP · BSD-3-Clause

## Links

- GitHub: https://github.com/sebastianbergmann/object-enumerator
- awesome-repositories: https://awesome-repositories.com/repository/sebastianbergmann-object-enumerator.md

## Description

Object-enumerator is a data structure crawler and enumeration library designed to discover and list all objects stored within deep or circular data references. It functions as a traversal tool that recursively walks through nested arrays and object graphs to identify every individual referenced object.

The library flattens complex hierarchical data structures into a linear collection of unique objects. This process enables data structure analysis and memory reference mapping by tracing all objects connected to a root element to understand the overall composition of a data set.

## Tags

### Data & Databases

- [Object Graph Navigators](https://awesome-repositories.com/f/data-databases/ordered-data-structures/ordered-collection-literals/object-collection-processors/object-transformation/object-graph-navigators.md) — Provides utilities to navigate and enumerate every individual object referenced within a complex data set. ([source](https://github.com/sebastianbergmann/object-enumerator#readme))
- [Data Structure Crawlers](https://awesome-repositories.com/f/data-databases/data-structure-crawlers.md) — Functions as a crawler for discovering and listing all objects stored within deep or circular data references.
- [Structural Analysis](https://awesome-repositories.com/f/data-databases/nested-data-extractors/structural-analysis.md) — Analyzes the structural composition of deeply nested arrays and object graphs to identify all unique contained objects.
- [Object Graph Flattening](https://awesome-repositories.com/f/data-databases/nested-data-manipulations/nested-list-flattening/object-graph-flattening.md) — Flattens complex object hierarchies into a comprehensive, linear list of all contained individual objects.
- [Object Enumeration Libraries](https://awesome-repositories.com/f/data-databases/object-property-accessors/deep-object-manipulations/object-enumeration-libraries.md) — Provides a library to flatten complex data structures into a unique list of all contained objects.
- [Iterative and Recursive Traversals](https://awesome-repositories.com/f/data-databases/recursive-structure-processors/recursive-structure-traversers/iterative-and-recursive-traversals.md) — Provides recursive traversal mechanisms to visit every reachable node within nested arrays and object graphs.

### Software Engineering & Architecture

- [Reference Tracking](https://awesome-repositories.com/f/software-engineering-architecture/dependency-resolution-engines/circular-reference-detection/reference-tracking.md) — Tracks object identities using a set to prevent infinite loops and resolve circular references during traversal.
- [Graph Traversal](https://awesome-repositories.com/f/software-engineering-architecture/entity-management/graph-traversal.md) — Traverses complex object hierarchies to find and identify every single referenced object.
- [Linearized Hierarchies](https://awesome-repositories.com/f/software-engineering-architecture/hierarchical-data-structures/linearized-hierarchies.md) — Transforms complex nested object hierarchies into a flat list of unique references for linear processing.
- [Object Reference Mapping](https://awesome-repositories.com/f/software-engineering-architecture/object-reference-mapping.md) — Maps the composition of a data set by tracing all objects connected to a root element.

### Development Tools & Productivity

- [Depth-First Traversal](https://awesome-repositories.com/f/development-tools-productivity/object-discovery-tools/depth-first-traversal.md) — Implements a depth-first search strategy to comprehensively discover all objects within a hierarchical data structure.

### Programming Languages & Runtimes

- [Type-Based Dispatching](https://awesome-repositories.com/f/programming-languages-runtimes/type-based-dispatching.md) — Differentiates between arrays and plain objects at runtime to apply the correct iteration method for child elements.
