# sebastianbergmann/recursion-context

**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-recursion-context).**

6,574 stars · 19 forks · PHP · BSD-3-Clause

## Links

- GitHub: https://github.com/sebastianbergmann/recursion-context
- awesome-repositories: https://awesome-repositories.com/repository/sebastianbergmann-recursion-context.md

## Description

recursion-context is a set of PHP utilities for traversing and modifying deep data hierarchies. It provides a recursive variable processor designed to apply transformations across nested arrays and objects while maintaining stability.

The project distinguishes itself through a recursion depth controller and reference tracking to prevent infinite loops and memory exhaustion when processing circular data structures. It monitors the level of nesting during traversal to avoid stack overflows.

These tools cover hierarchical data transformation and nested data processing, allowing for stateful visitation of leaf nodes and the reconstruction of modified data hierarchies.

## Tags

### Software Engineering & Architecture

- [Nested Data Transformers](https://awesome-repositories.com/f/software-engineering-architecture/recursive-validation-engines/recursive-tree-traversers/data-structure-traversers/nested-data-transformers.md) — Implements utilities for recursively traversing and transforming nested dictionaries and lists while reconstructing the hierarchy.
- [Loop Detection](https://awesome-repositories.com/f/software-engineering-architecture/conditional-iteration/infinite-loop-execution/loop-detection.md) — Prevents infinite loops and application crashes when processing PHP variables with circular references.
- [Circular Reference Detection](https://awesome-repositories.com/f/software-engineering-architecture/dependency-resolution-engines/circular-reference-detection.md) — Tracks visited object identities to prevent infinite recursion loops when processing circular data structures.
- [Recursion Depth Tracking](https://awesome-repositories.com/f/software-engineering-architecture/generic-type-definitions/generic-type-resolution/recursive-type-resolution/recursive-data-generators/recursion-depth-tracking.md) — Monitors recursion depth during nested variable operations to prevent memory exhaustion and stack overflows. ([source](https://github.com/sebastianbergmann/recursion-context/blob/main/README.md))
- [Recursive Processing Algorithms](https://awesome-repositories.com/f/software-engineering-architecture/hierarchical-data-structures/recursive-processing-algorithms.md) — Traverses nested data structures to apply operations to every element while preventing infinite loops. ([source](https://github.com/sebastianbergmann/recursion-context#readme))
- [Hierarchical Data Visitors](https://awesome-repositories.com/f/software-engineering-architecture/hierarchical-data-visitors.md) — Walks through nested arrays and objects to apply specific callback functions to every leaf node.
- [Recursion Depth Limits](https://awesome-repositories.com/f/software-engineering-architecture/recursion-depth-limits.md) — Provides a mechanism to terminate processing once a maximum nesting depth threshold is reached to prevent stack overflows.
- [Recursive Processing Contexts](https://awesome-repositories.com/f/software-engineering-architecture/recursive-processing-contexts.md) — Stores a shared environment during traversal to track metadata and current depth across recursive calls.

### Data & Databases

- [Hierarchical Data Transformers](https://awesome-repositories.com/f/data-databases/hierarchical-data-transformers.md) — Provides a utility for processing deep arrays and objects to modify elements across an entire data hierarchy.

### Development Tools & Productivity

- [Variable Structure Traversers](https://awesome-repositories.com/f/development-tools-productivity/variable-structure-traversers.md) — Recursively walks through nested PHP data structures to apply transformations while tracking visited variables to prevent loops.

### Programming Languages & Runtimes

- [Nested Data Processors](https://awesome-repositories.com/f/programming-languages-runtimes/array-mapping-functions/nested-data-processors.md) — Applies operations to deeply nested PHP arrays or objects while ensuring every single element is visited.
