PHP 8.1.0 RC 2 available for testing

La classe ParentIterator

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

Introduction

Ce sous-type de FilterIterator permet la récursivité au moyen de RecursiveIteratorIterator et il ne montre alors que les éléments ayant des enfants.

Synopsis de la classe

class ParentIterator extends RecursiveFilterIterator implements RecursiveIterator, OuterIterator {
/* Méthodes */
public __construct(RecursiveIterator $iterator)
public accept(): bool
public hasChildren(): bool
public next(): void
public rewind(): void
/* Méthodes héritées */
}

Sommaire

add a note add a note

User Contributed Notes 2 notes

up
4
Anonymous
9 years ago
ParentIterator is just a RecursiveFilterIterator whos accept() method calls the RecursiveFilterIterator->hasChildren() method to filter itself.

Basically, it filters out leaf nodes. For example

This would yield all files and directories
<?php
$rdi
= new RecursiveDirectoryIterator(__DIR__);
$iter = new RecursiveIteratorIterator($rdi, RecursiveIteratorIterator::CHILD_FIRST);
?>

wrapping that in a ParentIterator would filter it down to just directories
<?php
$rdi
= new RecursiveDirectoryIterator(__DIR__);
$iter = new RecursiveIteratorIterator($rdi, RecursiveIteratorIterator::CHILD_FIRST);
$dirsOnly = new ParentIterator($iter);
?>
up
2
dn dot permyakov at gmail dot com
2 years ago
Easy example for understanding:
<?php

$iterator
= new ParentIterator(
    new
RecursiveArrayIterator(
        array(array(
1, 2, 3), 'A', 'B', 'C')
    )
);

foreach (
$iterator as $recursive) {
    foreach (
$recursive as $value) {
        echo
$value . PHP_EOL;
    }
}
?>

1
2
3
To Top