![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 86 Pomógł: 20 Dołączył: 20.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Odkrywam ostatnio klasy SPL-a, jedne bardziej przydatne, inne zdecydowanie mniej... I tak się zastanawiam - czy warto korzsytać z DirectoryIterator? Próbowałem go użyć w małym skrypcie: odczytaj folder ze zdjęciami, pobierz wszystkie pliki ze zdjęciami, wykonaj akcję otrzymania tytułu na podstawie nazwy pliku, przekaż link do controllera. Coś, co było paroma linkami z wykorzystaniem prostej tablicy i paru funkcji sprawdzających, stało się nagle dużo bardziej skomplikowane: 1. Musiałem stworzyć własną klasę extends DirectoryIterator z funkcją pobierania tytułu pliku oraz funkcją usuwania niepotrzebnych fragmentów ścieżki pliku (żeby otrzymać wartość nadającą się do umieszczenia w linku). 2. Użyć FilterIteratora do usunięcia ".", ".." i wszystkich plików niebędących zdjęciami. 3. ...a po tym wszystkim okazało się, że skrypt działa dużo wolniej. Wobec tego zastanawia mnie, czy ktoś z was korzystał z DirectoryIteratora, w jakich celach i w jaki (mniej więcej) sposób? Czy warto? -------------------- -wdev-
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nie musiałeś tworzyć własnej klasy masz przecież getBasename() .
Nie musiałes używac filterIterator, wystarczyło w pętli użyć isDot() . -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
wdev... Cokolwiek obiektowego z reguły jest już na starcie wolniejsze, bo nie masz prostej rzeczy, ale cały pakiet gotowych rzeczy i niesie on z sobą pewien narzut czasowy. Kolejne warstwy abstrakcji zawsze to powodują w mniejszym lub większym stopniu. To jak z oprogramowaniem. Możesz mieć proste i szybkie narzędzie, ale ograniczone, albo wielką kobyłę, która tylko Ci obiadu nie ugotuje, ale przez taki ogrom możliwości jest ociężała. SPL to fajne narzędzie, gdyż zrzuca z programisty konieczność martwienia się o pewne rzeczy, ale za cenę mniejszej wydajności właśnie. Tak więc tam, gdzie nie spodziewasz się dużego obciążenia można stosować SPL gdzie chcesz, ale jeśli Cię obciążą mocniej to wrócisz do prostszych, ale wydajniejszych funkcji zapewne
![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 86 Pomógł: 20 Dołączył: 20.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie musiałeś tworzyć własnej klasy masz przecież getBasename() . Nie musiałes używac filterIterator, wystarczyło w pętli użyć isDot() . Niekoniecznie basename, skoro musze wskazac pozycje gdzies wewnatrz drzewa. Z basename co najwyzej moge zrobic konkatenacje z argumentem przekazanym konstruktorowi. Skoro chce odciazyc plik viewera z robienia takich akcji musze to zrobic w obiekcie... FilterIterator tez mi wyglada na niezbedny - jak inaczej przefiltruje tylko pliki graficzne? Poza tym, skoro odczytanie folderu bede robil obiektowo, a wiekszosc normalnymi petlami, to jaki ma sens w ogole korzystanie z tego obiektu? Zalozmy:
Co mi da zrobienie:
I uzycie odpowiednich metod? Zaoszczedzilem 1 linijke kodu kosztem wydajnosci. Dlatego mnie zastanawia czy sa jakies profity, o ktorych nie wiem? -------------------- -wdev-
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 01:08 |