Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> RecursiveDirectoryIterator
230005
post
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


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?
Go to the top of the page
+Quote Post
l3l0
post
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 16
Dołączył: 24.07.2009
Skąd: Gdańsk

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


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.
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Sugestia tofatal error: unknown code for given error in your post. Time to think
Go to the top of the page
+Quote Post
230005
post
Post #4





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


  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 (IMG:style_emoticons/default/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...

Ten post edytował 230005 31.01.2010, 16:47:48
Go to the top of the page
+Quote Post
wookieb
post
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
230005
post
Post #6





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


YYYYY, ok. Musiałem się dłuższą chwilę przyglądać, żeby zobaczyć co w tym jest innego (IMG:style_emoticons/default/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 :]

Ten post edytował 230005 31.01.2010, 17:32:50
Go to the top of the page
+Quote Post
wookieb
post
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.
Go to the top of the page
+Quote Post
230005
post
Post #8





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


Świetnie (IMG:style_emoticons/default/biggrin.gif) . Dziękuję!
Go to the top of the page
+Quote Post

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: 23.12.2025 - 07:14