Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%)
|
Czy można w trakcie iteracji po tym obiekcie, wyłączać wskazane foldery? edit: chodzi mi o jakieś proste rozwiązanie. Bo mogę robić if'a porównującego niechciane ścieżki/niechciane nazwy folderów/etc z aktualnym $file->getPathname() Ten post edytował LBO 16.11.2007, 15:34:20 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 10 Dołączył: 13.02.2007 Skąd: Rybnik Ostrzeżenie: (0%)
|
Polecam FilterIterator (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Stwórz sobie klasę, która będzie dziedziczyła FilterIterator. W tej klasie stwórz metode accept() i tam możesz pousuwać odpowiednie katalogi/pliki których nie chcesz w spisie. Pozdrawiam. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%)
|
Ale iteracja i tak się wykona po plikach i folderach z niechcianej ścieżki, a po co?
Zastanawiam się jak to zrobić metodami dostępnymi w tych iteratorach, ale żadko korzystałem z SPL i teraz mam problem. Coś takiego:
Udało się (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Za wszystko odpowiada zagnieżdżony RecursiveDirectoryIterator:
Ten post edytował LBO 16.11.2007, 16:51:31 |
|
|
|
Post
#4
|
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Jak tak własnie robiłem - sprawdzałem jeszcze isDot().
Teraz polecałbym jednak filterIterator. Pozdrawiam. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%)
|
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 :/
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\folder1 edit: Czyli nie da się tego zrobić bez filtrów? Ten post edytował LBO 16.11.2007, 21:37:06 |
|
|
|
![]() ![]() |
|
Aktualny czas: 20.12.2025 - 20:12 |