Włączanie plików + autoloader, chętnie bym posłuchał ciekawych pomysłów |
Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.
Włączanie plików + autoloader, chętnie bym posłuchał ciekawych pomysłów |
10.02.2005, 17:23:52
Post
#1
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) |
Problem stary jak świat: system wymaga włączenia sporej liczby plików i zarządzanie tym jest upierdliwe. Do tego nie należy włączać więcej kodu niż potrzeba, a najlepiej zrobić jakieś lazy load.
Oczywiście, technik jest wiele: 1) require_once rozsiane po plikach, najlepiej poprzedzone jakąś stałą, np. require_once ROOT_DIR . '/foo/Foo.class.php'; 2) Prado: deklarujemy namespacy - np. za pomocą funkcji using(), co dodaje nam ścieżki do include_path, a potem niech php znajdzie klasę. 3) Autoloader + mapa (nazwa klasy => ścieżka do pliku); autoloader wczytuje mapę i na jej podstawie jest w stanie znaleźć każdą klasę Są jeszcze jakieś inteligentne sposoby? Dobry mechanizm powinien być odporny na "przemeblowanie" struktury plików (np. chcemy połączyć kilka klas w jeden plik). BTW, włączanie plików bez klas (tylko funkcje i kod) jest gorsze, bo nie ma tego czegoś, czego można szukać po plikach... kolejna zaleta OOP? |
|
|
5.06.2005, 02:20:39
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) |
W koncu. Kod przepisany od nowa, lecz jeszcze nie dopieszczony:
http://northslope.lap.pl/dev/Autoloader/0.2-dev/ a tu zrodla do pobrania: http://northslope.lap.pl/dev/Autoloader/au...-0.2-dev.tar.gz Kod generowanie mapy (cache puste): Array ( [files_found] => 468 [files_parsed] => 468 [classes_found] => 233 ) Map generation time: :: 12.85658 sec a z cache (nic nie zmienione): Array ( [files_found] => 468 [files_parsed] => 0 [classes_found] => 233 ) Map generation time: :: 0.23078 sec map from php: :: 0.00076 sec map from ini: :: 0.00412 sec php szybsze od INI PSy: statystki (files_parsed)w udostepninych zrodlach sa nieprawidlowe, te wyzej sa ok. Testowane na P3 @ 560 Ten post edytował dr_bonzo 5.06.2005, 02:21:56 -------------------- Nie lubię jednorożców.
|
|
|
Wersja Lo-Fi | Aktualny czas: 23.09.2024 - 04:41 |