Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: RecursiveDirectoryIterator
Forum PHP.pl > Forum > PHP
230005
Używając tej klasy dostaję taki błąd: Call to undefined method SplFileInfo::isDot()Wersja php: 5.3.1, odpowiednie klasy są włączone. Jakieś sugestie?
l3l0
Klasa SplFileInfo nie ma metody isDot, Metodę tą posiada dopiero klasa DirectoryIterator http://www.php.net/~helly/php/ext/spl/clas...r.html#_details

Może wklej kod w którym dostajesz ten błąd.
wookieb
Sugestia tofatal error: unknown code for given error in your post. Time to think
230005
  1.  
  2. foreach($iterator as $file) {
  3. if(!$file->isDot()) {
  4. if(!$file->isDir()) {
  5. require_once($file->getPathname());
  6. }
  7. else {
  8. self::importFiles($iterator->getChildren());
  9. }
  10. }
  11. }
  12.  


Iterator istnieje oczywiście smile.gif. Wiem, że splFileInfo nie ma tej metody, ale co z tego? RecursiveDirectoryIterator dziedziczy po DirectoryIterator, który ją posiada.

Edit:
I oczywiście kiedy zamieniłem RecursiveDirectoryIterator na DirectoryIterator wszystko śmiga - tylko że nie o to mi chodzi...
wookieb
  1. $iterator = new RecursiveDirectoryIterator('.');
  2. foreach($iterator as $file) {
  3. if(!$iterator->isDot()) {
  4.  
  5. if(!$file->isDir()) {
  6. require_once($file->getPathname());
  7. }
  8. else {
  9. self::importFiles($iterator->getChildren());
  10. }
  11. }
  12. }

Mam nadzieję, że następnym razem nie wywołasz takich fatal errorów smile.gif
230005
YYYYY, ok. Musiałem się dłuższą chwilę przyglądać, żeby zobaczyć co w tym jest innego biggrin.gif. Wytłumaczenie tego zjawiska jednak jest mi potrzebne. No bo jak to jest, że najpierw wywołujesz $iterator->isDot(), a potem $file->isDir(), przecież te metody odnoszą się do tego samego elementu, którym w tym wypadku jest $file. No i tutaj pierwszy przykład mówi, że dobrze miałem: http://pl.php.net/manual/en/directoryiterator.isdot.php. Z drugiej strony Twoja metoda działa... Hmm... wyjaśnij plis :]
wookieb
Sorki, że napisałem
  1. $iterator = new RecursiveDirectoryIterator('.');
  2. foreach($iterator as $file)
  3. {
  4. if(!$iterator->isDot())
  5. {
  6. if($iterator->isDir())
  7. {
  8. echo 'katalog: '.$file->getPathName().PHP_EOL;
  9. }
  10. else
  11. {
  12. echo 'plik: '.$file->getPathName().PHP_EOL;
  13. }
  14. }
  15. }

A różnicę, która łatwo zauważysz to, że $file w przypadku RecursiveDirectoryIterator to obiekt typu SplFileInfo, a w DirectoryIteratory byłby to DirectoryIterator, dlatego działa to inaczej.
230005
Świetnie biggrin.gif. Dziękuję!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.