Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> RecursiveDirectoryIterator, wyłaczanie wybranych katalogów
LBO
post
Post #1





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. <?php
  2. foreach ($this->_includeDirectories as $directory) {
  3. $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
  4. foreach ($iterator as $file) {
  5. // tutaj, sprawdzenie, czy $file jest niechcianym
  6.  // folderem i pominięcie plików i folderów się w nim znajdujących
  7. }
  8. }
  9. ?>


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
LBO
post
Post #2





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:
  1. <?php
  2. $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory), RecursiveIteratorIterator::SELF_FIRST);
  3. foreach ($iterator as $file) {
  4. /* @var $file SplFileInfo */
  5. if ($file->isDir() || in_array($file->getPathname(), $excludedDirectories) {
  6. // tutaj zrobić coś ze zmienną $iterator, żeby skoczyła
  7. // do następnego folderu, a nie zagłębiała się w obecny
  8. } else {
  9.  // code
  10. }
  11. }
  12. ?>


Udało się (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Za wszystko odpowiada zagnieżdżony RecursiveDirectoryIterator:
  1. <?php
  2. $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory), RecursiveIteratorIterator::SELF_FIRST);
  3. foreach ($iterator as $file) {
  4. /* @var $file SplFileInfo */
  5. if ($file->isDir() && in_array($file->getPathname(), $excludedDirectories) {
  6. $rdi = $iterator->getInnerIterator(); // zwraca RecursiveDirectoryIterator przetwarzający właśnie dany folder
  7. /* @var $rdi RecursiveDirectoryIterator */
  8. $rdi->next(); // przesuwamy się dalej, ignorując niechciany folder
  9. }
  10. }
  11. }
  12. ?>


Ten post edytował LBO 16.11.2007, 16:51:31
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 02:30