Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zasady pisania na forum Pro

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
hawk
post 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? winksmiley.jpg
Go to the top of the page
+Quote Post

Posty w temacie
- hawk   Włączanie plików + autoloader   10.02.2005, 17:23:52
- - DeyV   Aby sprawę jeszcze bardziej skomplikować - warto p...   10.02.2005, 21:46:51
- - Imperior   Myślę, że moje rozwiązanie pomoże Ci, jeśli wpadni...   11.02.2005, 18:39:48
- - hawk   @Imperior: Dwie słabe strony tu widzę: 1) Wszyst...   18.02.2005, 14:39:33
- - bela_666   Ja mysle, zeby rozwiazac to na podobnej zasadzie j...   18.02.2005, 15:03:36
- - Imperior   Cytat(hawk @ 2005-02-18 13:39:33)Dwie słabe s...   18.02.2005, 20:17:07
- - hawk   @bela_666: Takie rozwiązanie na pewno pasuje do ja...   21.02.2005, 14:43:27
- - hawk   @serafin: Możesz napisać więcej? Mi się zawsze wyd...   25.02.2005, 09:23:01
- - Imperior   Cytat(hawk @ 2005-02-25 08:23:01)Bo problem z...   25.02.2005, 09:55:57
- - Vengeance   A co Wam się stanie gdy zamiast System.Out będzie ...   25.02.2005, 11:42:46
- - hawk   Nic się nie stanie, poza utratą estetyki . Chociaż...   25.02.2005, 12:06:36
- - Vengeance   ale to jest php a nie java Co do autoloadera... ...   25.02.2005, 12:31:22
- - hawk   Co za problem? Sprawdzanie po zrobieniu explode je...   25.02.2005, 12:48:42
- - Seth   Troche to stary kod ale moze sie przyda: [PHP] po...   25.02.2005, 12:50:43
- - bela_666   Seth, a czy te pregi nie spowalniają bardzo przy d...   25.02.2005, 12:55:30
- - Seth   Jakies spowolnienie napewno jest ale za to mozna l...   25.02.2005, 13:07:03
- - bela_666   Cytat(hawk)Podsumowując, idealnie chciałbym mieć: ...   26.02.2005, 00:02:23
- - Nievinny   Jeśli mogę wtrącić trzy grosze, ja myślę, że można...   26.02.2005, 09:35:42
- - hawk   @bela_666: pokaż pokaż pokaż   26.02.2005, 09:55:15
- - Vengeance   Nievinny: jakbyś zrobił cache jakiś to ok. Teraz u...   26.02.2005, 11:55:48
- - bela_666   Cytat(hawk @ 2005-02-26 09:55:15)@bela_666: p...   26.02.2005, 12:21:14
- - Vengeance   Połączyłem kody: bela_666, Nievinny oraz Imperiora...   26.02.2005, 12:36:56
- - Vengeance   Linia nr 9: zmieniasz ją na: Kod if(!i...   26.02.2005, 12:41:48
- - Nievinny   @Vengeance -> Czy twoim zdaniem ładowanie z map...   26.02.2005, 17:03:09
- - Vengeance   Nievinny: chodzi oto, aby mape generować tylko RAZ...   26.02.2005, 17:35:25
- - Nievinny   CytatNievinny: chodzi oto, aby mape generować tylk...   26.02.2005, 17:42:59
- - Vengeance   A po co foreach? Jeszcze opozniac ? To $map[...   26.02.2005, 18:15:03
- - hawk   @Vengeance et al: No, bardzo ładny kod . Ja bym do...   26.02.2005, 18:42:06
- - Vengeance   Ok userzy forum.php.pl "wymyslili" juz i...   26.02.2005, 19:07:38
- - Nievinny   Nazwa: Autoload Class System... może być, a klasa...   27.02.2005, 12:32:23
- - chmolu   Ja to rozwiązałem podobnie, jak w nowym Mojavi: [...   4.03.2005, 10:29:10
- - Nievinny   A ja generujesz listę klas? Tu masz od razu genera...   4.03.2005, 10:52:36
- - chmolu   Lista klas jest w pliku konfiguracyjnym autoload.i...   4.03.2005, 16:34:52
- - hawk   @chmolu: 1) Z tego co pamietam, w __autoload nie m...   4.03.2005, 17:26:32
- - chmolu   Cytat1) Z tego co pamietam, w __autoload nie mozna...   4.03.2005, 17:49:43
- - Nievinny   W sumie, skrypt po raz pierwszy zaczyna działanie ...   4.03.2005, 18:05:53
- - Imperior   Cytat(hawk @ 2005-03-04 16:26:32)1) Z tego co...   5.03.2005, 11:12:31
- - hawk   @chmolu: Faktycznie, obsługa plików ini jest bardz...   7.03.2005, 03:36:42
- - Bora   Pliki ini są wczytywane szybciej niż php gdyż mają...   7.03.2005, 15:06:38
- - Vengeance   A czy są szybsze od zserializowanej tablicy, zapis...   7.03.2005, 16:07:14
- - Imperior   Cytat(Vengeance @ 2005-03-07 15:07:14)A czy s...   7.03.2005, 17:09:23
- - hawk   @Bora: Pliki ini moze i sa wczytywane szybciej, al...   7.03.2005, 17:19:21
- - orson   witam ... a moze w ini zrobic 2 sekcje ... Kod...   7.03.2005, 22:59:24
- - hawk   A w jaki sposob z gory okreslisz, ktora sciezke ma...   8.03.2005, 00:10:53
- - Nievinny   A ja mam jeszcze pytanie dot. __autoload(). Czy je...   8.03.2005, 08:01:25
- - orson   Cytat(hawk @ 2005-03-08 00:10:53)A w jaki spo...   8.03.2005, 20:18:36
- - hawk   @Orson: nie o to mi chodzi. Masz np. (a raczej uży...   9.03.2005, 03:16:17
- - orson   witam ... hmm ... no to w pliku ini w sekcji clas...   9.03.2005, 07:31:00
- - dr_bonzo   @Nievinny: wyrzuc wyjatek w tej metodzie i sprawdz...   9.03.2005, 10:25:30
- - Nievinny   Owszem wywala wyjątek, ale nie obsługuje go w zwyk...   9.03.2005, 17:20:55
- - chmolu   Rozwiązanie z generowaniem mapy przez skanowanie k...   12.03.2005, 23:12:26
- - Vengeance   chmolu: Zauważ, że to Ty trzymasz każdą klasę w in...   13.03.2005, 01:10:23
- - chmolu   @Vengeance: to prawda, nie każdy musi trzymać każd...   13.03.2005, 09:44:36
- - bela_666   @chmolu a jak zmienisz ścieżke do smarty ?   13.03.2005, 10:44:30
- - chmolu   Nie używam Smarty więc nie ma żadnego problemu ...   13.03.2005, 12:43:09
- - Vengeance   @chmolu: ty nie. Ale z tego co wynika z twoich wyp...   13.03.2005, 13:43:28
- - chmolu   Zapewniam cię, że nie będzie to żaden problem A...   13.03.2005, 13:55:45
- - Ociu   Pozwole sobie odkopać temat Zastanawiam się czy ...   4.05.2005, 18:16:29
- - davidD   Tylko właściwie... po co XML do zwykłego przypisan...   5.05.2005, 00:09:50
- - matid   Ja to widzę tak: 1. Crowler, szuka po określonych ...   5.05.2005, 06:37:45
- - Ociu   Cytat(matid @ 2005-05-05 07:37:45)2. Dodatkow...   5.05.2005, 07:22:02
- - chmolu   IMO pliki XML w tym wypadku są niepotrzebne. Szybc...   5.05.2005, 08:24:02
- - Nievinny   XML to przeładowanie, a nam zależy na czasie, nie?...   5.05.2005, 17:06:02
- - matid   Cytat(Nievinny @ 2005-05-05 18:06:02)XML to p...   5.05.2005, 17:55:53
- - bigZbig   @matid -> zauwazylem u Ciebie duze przywiazanie...   10.05.2005, 09:28:27
- - Nievinny   @matid -> ale tą mapę musisz za każdym uruchomn...   10.05.2005, 16:01:11
- - matid   Cytat(Nievinny @ 2005-05-10 17:01:11)@matid -...   10.05.2005, 17:36:31
- - Nievinny   Czyli trzymasz tylko katalogi do parsowania? To ni...   10.05.2005, 18:24:33
- - Ociu   Cytat(matid @ 2005-05-10 18:36:31)Chodzi mi o...   10.05.2005, 19:40:08
- - matid   Cytat(Ociu @ 2005-05-10 20:40:08)Przemyślałem...   10.05.2005, 20:34:10
- - Vengeance   " trwa to ok. 0,4 s" lol :] Mój kod (a ...   10.05.2005, 21:26:35
- - matid   Cytat(Vengeance @ 2005-05-10 22:26:35)" ...   10.05.2005, 21:46:19
- - Ociu   Czepiasz się szczegółów, liczba była podana dla pr...   11.05.2005, 09:08:31
- - Vengeance   To nie było czepianie. Chodziło mi o sposób w jaki...   11.05.2005, 20:45:37
- - matid   Dla zainteresowanych - moja klasa Autoloader: http...   11.05.2005, 21:21:56
- - hawk   Skoro temat zrobił się popularny i każdy chce mieć...   12.05.2005, 09:45:30
- - bigZbig   @hawk -> Amen   12.05.2005, 09:49:20
- - dr_bonzo   ...mam i ja. Stworzylem swojego autoloadera: - w ...   26.05.2005, 15:15:11
- - Vengeance   Z twojego opisu wynika mi, że za każdym uruchomien...   26.05.2005, 18:37:05
- - dr_bonzo   CytatZ twojego opisu wynika mi, że za każdym uruch...   26.05.2005, 19:12:28
- - hawk   Ciekawe rozwiązanie. Faktem jest, że mi by się nie...   27.05.2005, 20:47:33
- - dr_bonzo   W koncu. Kod przepisany od nowa, lecz jeszcze nie ...   5.06.2005, 02:20:39
- - Imperior   dr_bonzo: http://wiki.php.pl/index.php/RecursiveDi...   5.06.2005, 13:02:34
- - hawk   Fajny kod. Nawet zdążyłem już użyć . Kilka uwag: ...   5.06.2005, 13:23:14
- - dr_bonzo   Cytat- nie można podać extension np. "class.p...   5.06.2005, 14:00:34
- - hawk   A co powiecie na taką implementację? [PHP] pobierz...   12.06.2005, 22:16:47
- - cagrET   hawk: widzę, że używasz "notacji węgierskiej...   13.06.2005, 13:24:34
- - hawk   Nie, nie czytałem do tej pory. Przedrostki określa...   13.06.2005, 20:10:13
- - matid   Cytat(hawk @ 2005-06-05 14:23:14)- przydatną ...   13.06.2005, 20:30:28
- - dr_bonzo   cagrET: link do swietnego serwisu. CytatZ jakiegoś...   13.06.2005, 21:03:51
- - hawk   @dr_bonzo i matid: Niestety, phpDocumentor nie ma,...   13.06.2005, 21:51:34
- - matid   Cytat(hawk @ 2005-06-13 22:51:34)@dr_bonzo i ...   13.06.2005, 22:12:12
- - hawk   @matid: Pomysł wręcz genialny w swojej prostocie. ...   16.06.2005, 12:17:19
- - matid   No rzeczywiście, @scope będzie lepsze. Spróbuję to...   16.06.2005, 15:48:55
- - hawk   @serafin: 1) Nikt ci nie broni tworzyć takiej map...   16.06.2005, 18:31:01
- - hawk   Cytat("serafin")Hawk: Wykorzystales 10 p...   16.06.2005, 20:42:41
- - matid   Cytat(serafin)Ma to sens? A dlaczego nie? Mi osobi...   16.06.2005, 22:08:29
- - bela_666   Cytat(matid @ 2005-06-16 23:08:29)Cytat(seraf...   16.06.2005, 22:12:29
- - Imperior   Cytat(matid @ 2005-06-16 21:08:29)Ma ktoś jak...   17.06.2005, 07:20:58
- - matid   Chyba jednak skorzystam z opcji 1, ponieważ zasięg...   17.06.2005, 07:42:50
2 Stron V   1 2 >


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 20:58