Trait that implements the IteratorAggregate and Traversable interfaces. Enables traversing properties with methods such as foreach() by aggregating a Generator.

Trait synopsis

trait IteratorAggregateTrait
{
    use TypeTrait;

    // IteratorAggregate interface implementation.

    /**
     * Iterate object properties and yield key/value pair.
     * @return Generator The iterator function.
     */
    public function getIterator(): Generator;
}

Examples


use Phrity\O\Object\IteratorAggregateTrait;

class MyClass implements IteratorAggregate, Traversable
{
    use IteratorAggregateTrait;

    public function __construct(object $input)
    {
        $this->initialize($input);
    }
}

$class = new MyClass((object)['a' => 1, 'b' => 2, 'c' => 3]);
foreach ($class as $key => $val) {
    // ...
}