Problem już rozwiązany. Jak wspomniałem filtry same w sobie nie powodują wyłączenia z iteracji danego elementu. I tak bym musiał to oprogramować. A ponieważ nie potrzebuję takiego "zaawansowanego" narzędzia - wolałem to zrobić ręcznie.
edit:
A jednak, wyskoczył Bug :/
<?php
foreach ($iterator as $file) {
/* @var $file SplFileInfo */
if (in_array($file->getPathname(), $this->_excludePathes
)) { $rdi = clone $iterator->getInnerIterator();
/* @var $rdi RecursiveDirectoryIterator */
$rdi->next();
} else {
print $file->getPathname() . '<br />' . PHP_EOL
; }
}
?>
niby działa i gdy trafi na folder umieszczony w tablicy $this->_excludePathes, to go pomija -- NIBY. Ale w czasie testów wyszło, że jeżeli w tym samym folderze znajduje się plik o takiej samej nazwie (oczywiście piszę o tym, co się znajduje przed rozszerzeniem) to wyrzuca wyjątek:
Cytat
Fatal error: Uncaught exception 'UnexpectedValueException' with message 'RecursiveDirectoryIterator::__construct(E:\localhost\www\test\folder1.txt) [<a href='http://www.php.net/manual/pl/function.RecursiveDirectoryIterator---construct'>function.RecursiveDirectoryIterator---construct</a>]: failed to open dir: Invalid argument' in E:\localhost\libraries\Headshot\Loader\Generator.php:53 Stack trace: #0 [internal function]: RecursiveDirectoryIterator->__construct('E:\localhost\ww...') #1 E:\localhost\libraries\Headshot\Loader\Generator.php(53): RecursiveDirectoryIterator->getChildren() #2 E:\localhost\www\generator_test.php(17): Headshot_Loader_Generator->generate() #3 {main} thrown in E:\localhost\libraries\Headshot\Loader\Generator.php on line 53
Wykrzaczył się na pliku
E:\localhost\www\test\folder1.txt w momencie, gdy trafił na folder do pominięcia
E:\localhost\www\test\folder1edit:
Czyli nie da się tego zrobić bez filtrów?