PHP 8.6.0 Beta 1 is available for testing

Класс ParentIterator

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

Введение

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

Обзор класса

class ParentIterator extends RecursiveFilterIterator {
/* Методы */
public function __construct (RecursiveIterator $iterator)
public function accept (): bool
public function getChildren (): ParentIterator
public function hasChildren (): bool
public function next (): void
public function rewind (): void
/* Наследуемые методы */
public function FilterIterator::accept (): bool
public function FilterIterator::current (): mixed
public function FilterIterator::key (): mixed
public function FilterIterator::next (): void
public function FilterIterator::rewind (): void
public function FilterIterator::valid (): bool
public function IteratorIterator::current (): mixed
public function IteratorIterator::key (): mixed
public function IteratorIterator::next (): void
public function IteratorIterator::rewind (): void
public function IteratorIterator::valid (): bool
}

Содержание

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

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

up
3
dn dot permyakov at gmail dot com
7 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
2
Anonymous
14 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);
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /