Класс ParentIterator

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

Введение

Это расширенный класс от FilterIterator, позволяющий осуществить рекурсивную итерацию, используя класс RecursiveIteratorIterator, который показывает только те элементы, которые имеют потомков.

Обзор класса

Содержание

Добавить

Примечания пользователей 2 notes

up
3
dn dot permyakov at gmail dot com
5 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
up
3
Anonymous
13 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);
?>
To Top