Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wydajność __autoload, jak zrobić żeby się nie narobić i nic nie zepsuć
athabus
post
Post #1





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Zastanwiam się na użyciem __autoload w moim nowy projekcie. Wiem, że na php pro jest wątek na temat optymalizacji __autoload, ale mi zależy na prostym rozwiązaniu bo i projekt jest mały w porywach do średniego.

zrobiłem coś takiego jak poniżej - proste, że aż boli, ale o to chodzi:
  1. <?php
  2. function __autoload($class)
  3. {
  4. //Tablica potencjalnych lokalizacji klas php
  5. $paths=array(MODEL_DIR, MODEL_DIR.'dao/', HELPER_CLASSES_DIR, );
  6. foreach($paths as $path)
  7. {
  8. $file=$path. $class. '.php';
  9. if (file_exists($file))
  10. {
  11. require_once($file);
  12. }
  13. }
  14. }
  15. ?>


Jak widać rozwiązanie polega na wszytaniu wszystkich potencjalnych katalogów, w których znajdują się klasy php i następnie przeszukaniu ich w poszukiwaniu danej klasy.
Docelowo w projekcie będzie jakieś +/- 200 klas w 8-10 katalogach. Czy to rozwiązanie jest "ok" czy raczej niezbyt racjonalne - chodzi oczywiście o wydajność. Nie wiem jaki jest koszt przeszukania kilku katalogów - może lepiej zrobić mniej katalogów?

Co o tym myślicie. Dodam, że wolałbym uniknąć mapowania plików w tablicach itp - chodzi mi o bardzo proste i w miarę wydajne rozwiązanie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
athabus
post
Post #2





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Sam nie wiem, generalnie chodziło mi o to, że u mnie autoloader to w zasadzie kontener na mapę scieżek. Funkcja __autoload okresla wzor budowy pliku php i sciezki - nie chciałem też za każdym razem przekazywać wszystkich scieżek do Autoloadera, skoro i tak będzie z nich korzystał sporadycznie. No ale to taki szczegół. Twoje podejście jest bardziej zgodne z paradygmatem obiektowym.

//edti
czy ja dobrze rozumiem ze ty za pomoca funkcji eksport() zwracasz tablice ze sciezkami. Bo tak sie zastanawiam, co się dzieje jak zmieniasz polozenie katalogu. U mnie obiekt jest odpowiedzialny za to czy dany plik istnieje -> jesli nie istnieje we wskazanej lokalizacji to autaomatycznie lista sciezek jest aktualizowana. Jak to działa u Ciebie?

Ten post edytował athabus 25.08.2006, 10:26:00
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: 4.10.2025 - 11:46