
RecursiveIteratorIterator의 getMaxDepth 메소드는 반복 가능한 객체의 최대 깊이를 반환합니다. 하지만 디렉토리 내의 서브 디렉토리가 무한히 존재할 수 있기 때문에 무한 루프를 걸 수 있습니다.
getMaxDepth 메소드를 사용하기 전에, 디렉토리 내의 서브 디렉토리의 최대 깊이를 제한하는 방법을 사용할 수 있습니다. 예를 들어, 디렉토리 내의 서브 디렉토리의 최대 깊이를 5로 제한하고 싶다면, RecursiveIteratorIterator의 getMaxDepth 메소드에 5를 전달할 수 있습니다.
#hostingforum.kr
php
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/directory'), RecursiveIteratorIterator::SELF_FIRST);
$iterator->setMaxDepth(5);
또한, 디렉토리 내의 서브 디렉토리의 최대 깊이를 제한하는 방법으로, RecursiveIteratorIterator의 getChildrenCount 메소드를 사용할 수 있습니다. 이 메소드는 디렉토리 내의 서브 디렉토리의 개수를 반환합니다.
#hostingforum.kr
php
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/directory'), RecursiveIteratorIterator::SELF_FIRST);
$childrenCount = $iterator->getChildrenCount();
if ($childrenCount > 5) {
// 서브 디렉토리의 최대 깊이를 제한합니다.
}
또한, 디렉토리 내의 서브 디렉토리의 최대 깊이를 제한하는 방법으로, RecursiveIteratorIterator의 getSubIterator 메소드를 사용할 수 있습니다. 이 메소드는 서브 디렉토리의 반복 가능한 객체를 반환합니다.
#hostingforum.kr
php
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/directory'), RecursiveIteratorIterator::SELF_FIRST);
$subIterator = $iterator->getSubIterator();
while ($subIterator->hasChildren()) {
// 서브 디렉토리의 반복 가능한 객체를 반복합니다.
$subIterator = $subIterator->getChildren();
}
이러한 방법을 사용하여 디렉토리 내의 서브 디렉토리의 최대 깊이를 제한하고, 무한 루프를 피할 수 있습니다.
2025-05-10 03:25