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.
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? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%)
|
Ja to widzę tak:
1. Crowler, szuka po określonych folderach w poszukiwaniu plików php zawierających klasy. Będzie miał możliwość wyszukiwania z filtrowaniem nazw plików, nazwach klas itp. Być może po dodaniu opcji filtracji czas generowania mapy się zwiększy nieco, ale na jakoże jest to czynność wykonywana rzadko, można sobie na to pozwolić. 2. Dodatkowy plik XML z klasami zewnętrznymi. W tym pliku będą zapisane w postaci XML dodatkowe klasy, które autoloader ma obsługiwać. Plik byłby parsowany i razem z wynikami crowlera zapisywany w pliku php w postaci tablicy. |
|
|
|
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
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 ![]() ![]() |
|
Aktualny czas: 21.11.2025 - 11:31 |