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
 
Start new topic
Odpowiedzi
Sh4dow
post 1.03.2007, 12:58:38
Post #2





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


Mnie zastanawia ile samo odwolanie sie do funkcji autoload zajmuje czasu, Bo to jak zbudujesz ta funkcje tak bedzie ona sprawna.
Jesli autoload ma szukac po wszystkich katalogach to tak, bedzie to wolne. Ale jesli podzielic pliki na grupy, uzyc odpowiednich schematow w budowaniu nazw klas to powinno byc to sprawne.
Chyba ciekawszym sposobem to kozystanie z magazynu obiektow polaczonego z autoloaderem. Odwolujesz sie do magazynu po obiekt jakiegos modelu, ktory ma miec zawsze jedna instancje aby powiedzmy nie powielac polaczen z baza danych. Magazyn sprawdza czy istnieje juz taka instancja, jesli nie sprawsza czy istnieje taka klasa, jesli nie szuka w odpowiednim katalogu pliku o odpowiedniej nazwie, po czym ładuje plik, tworzy instancje i ja zwraca.
Czy to jest wygodne czy nie to juz inna sprawa ale mozna takie rozwiazanie zmodyfikowac i poszerzyc o inne funkcjonalnosci dostosowane do swoich potrzeb.


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post

Posty w temacie
- hawk   Włączanie plików + autoloader   10.02.2005, 17:23:52
- - hawk   @serafin: Trochę konsekwencji. Bardzo się starasz,...   17.06.2005, 08:44:59
- - matid   Korzystam z debug_backtrace" title="Zobacz w manua...   17.06.2005, 10:31:38
- - Imperior   Cytat(matid @ 2005-06-17 06:42:50)Chyba jedna...   17.06.2005, 15:12:25
- - matid   [PHP] pobierz, plaintext <?php class Test1 exte...   17.06.2005, 15:41:10
- - bela_666   Fajna bajeczka : http://groups.google.pl/groups?q=...   17.06.2005, 20:35:56
- - Imperior   Cytat(matid @ 2005-06-17 14:41:10)Jak wczytuj...   17.06.2005, 23:03:25
- - squid   Jeszcze nie przeczytalem calego tematu wiec sory j...   8.08.2005, 12:56:24
- - hawk   Tak naprawdę to wszystkie interfejsy powinno się w...   8.08.2005, 21:39:27
- - Vengeance   Wywalić interfejsy? A niby z jakiej racji? Przecie...   8.08.2005, 22:56:24
- - NuLL   @Hawk - napisać parser plików który będzie usuwał ...   8.08.2005, 23:02:05
- - matid   Jeśli kod jest wydany na zasadach OpenSource to mi...   9.08.2005, 07:36:32
- - hawk   Ale ja mówię o dwóch wersjach kodu: debug i releas...   9.08.2005, 14:25:03
- - chmolu   No jakoś mi się nie widzi usuwanie w kodzie ...   9.08.2005, 14:59:17
- - squid   Cytat(chmolu @ 2005-08-09 15:59:17)No jakoś m...   9.08.2005, 15:12:26
- - NuLL   Macie może jakiś pomysł co zrobić z autoloaderem k...   17.01.2006, 11:49:38
- - bigZbig   Mozna zastosowac cos w rodzaju przestrzeni nazw. W...   17.01.2006, 12:18:57
- - NuLL   Ja cos takiego robie tzn mam ezcCacheStorageFileAr...   17.01.2006, 12:23:08
- - bela_666   A po co rozbijac? Ja mam kilkaset linijek i smiga....   17.01.2006, 12:57:03
- - squid   co nazywacie mapa? Czy jest to skojarzona z klasa ...   17.01.2006, 13:12:04
- - NuLL   CytatA po co rozbijac? Ja mam kilkaset linijek i s...   17.01.2006, 13:18:13
- - Ociu   Cytat(squid @ 2006-01-17 14:12:04)co nazywaci...   17.01.2006, 14:28:28
- - bela_666   NuLL, pytanie moje brzmi, czy każdy komponent może...   17.01.2006, 19:16:03
- - NuLL   bela_666 - moze, nie wszystkiego bo czesc jest zal...   17.01.2006, 20:06:44
- - hawk   @NULL: IMHO rozwiązaniem problemu ze zbyt dużą lic...   24.01.2006, 08:54:37
- - squid   Cytat(hawk @ 2006-01-24 09:54:37)@NULL: IMHO ...   14.02.2006, 13:34:38
- - eMartio   Cytat(DeyV @ 2005-02-10 20:46:51) CytatTakie...   31.03.2006, 19:40:31
- - matid   Cytat(eMartio @ 2006-03-31 19:40:31)Co oznacz...   31.03.2006, 20:25:42
- - bela_666   Cytat(eMartio @ 2006-03-31 20:40:31)CytatTaki...   31.03.2006, 20:51:29
- - NuLL   Czy ktos moze wykonywal testy po jakims ciezkim ob...   27.05.2006, 16:52:38
- - Ludvik   Ja osobiście wszystko mam przygotowane pod autoloa...   27.05.2006, 21:44:26
- - squid   przy dobrym projekcie autoloadera mozna ominac f-c...   27.05.2006, 22:19:50
- - NuLL   @Ludvik - dzieki za wiesci - o cos takiego mi chod...   28.05.2006, 15:16:33
- - Vengeance   To ciekawe co mówicie, bo w mojej aplikacji autolo...   10.06.2006, 17:38:21
|- - squid   Cytat(Vengeance @ 10.06.2006, 18:38 ) To ...   10.06.2006, 19:07:47
- - bigZbig   Ja tez uzywam autoloadera, ale nie tworze jednej g...   12.06.2006, 08:04:11
- - Vengeance   Jakie argumenty by tu nie padały, i tak nic nie zm...   12.06.2006, 13:46:28
- - bigZbig   Argument o czytelności kodu do mnie nie przemawia ...   13.06.2006, 06:52:15
- - NuLL   CytatŻe już nie wspomne o np. umiejetnośći podpowi...   13.06.2006, 16:36:42
- - orson   witam eclipse przechowuje informacje o wszystkich...   13.06.2006, 17:37:21
- - eai   Ja generuje sobie mapę przy instalacji aplika...   5.08.2006, 16:28:49
- - squid   "bigZbig dla kaydego pakietu musisy kopiowac ...   5.08.2006, 16:44:16
- - mtod   Przepraszam, ale nie doczytałem tego wątku od desk...   8.08.2006, 16:21:45
- - lukir   Mógłby ktoś z was podsumować wszystkie te rozważan...   8.08.2006, 23:27:40
- - mtod   @lukir: nie rozumiem, jak to: "nowych"?   9.08.2006, 11:57:53
- - lukir   @mtod: na podanej przez Ciebie stronce jest napisa...   12.08.2006, 10:24:01
- - Ludvik   Wtedy ten autoloader straci na wydajności. Każdora...   12.08.2006, 10:30:55
- - squid   wracajac do wydajnosci __autoload() to wspomniane ...   12.08.2006, 11:09:43
- - Denver   Ja, wykorzystując ujednolicone nazewnictwo klas, k...   18.08.2006, 22:52:45
- - LBO   Bardzo przydatne przy pisaniu autoloadera mogą być...   16.01.2007, 20:23:45
- - dr_bonzo   CytatSkoro autoloader w zamierzeniu istnieje dla ł...   16.01.2007, 21:57:56
- - LBO   Ten exit() to tylko przykład, nie mający...   16.01.2007, 22:06:02
- - NuLL   CytatChodzi o sam fakt, że model obiektowy php dop...   17.01.2007, 15:13:32
- - athabus   Ja napisałem sobie prosty autoloader - szczerze mó...   17.01.2007, 16:08:59
- - bigZbig   Problem z mapą obrazków jest tylko taki, że za każ...   17.01.2007, 16:52:03
- - athabus   W zf jest to bardzo fajnie rozwiązane - tu się zgo...   17.01.2007, 17:18:00
- - J4r0d   Przeczytałem cały wątek (trochę czasu to zajęło) i...   18.01.2007, 00:50:57
- - dr_bonzo   CytatCzy warto jeszcze kodować jakimś algorytmem z...   18.01.2007, 01:06:33
|- - J4r0d   Cytat(dr_bonzo @ 18.01.2007, 01:06:33...   18.01.2007, 01:16:20
- - dr_bonzo   CytatDalej zastanawiam się czy nie lepiej ładować ...   18.01.2007, 09:09:06
- - cadavre   Ja nazywam klasy nazwa_klasy.class.php - to chyba ...   18.01.2007, 16:52:08
- - DjKermit   Witam. Ja wykombinowałem coś takiego: Klasa: [PHP]...   22.01.2007, 12:26:38
- - hwao   Bardzo ładna klasa, mi się podoba - jakbym stosowa...   23.01.2007, 18:14:47
- - DjKermit   Dzięki bardzo. Cytat(hwao @ 23.01.2007, 18...   23.01.2007, 18:28:59
- - Turgon   Hmm... Klasa ciekawa i sporo wyjaśnia Dzi...   23.01.2007, 18:32:35
- - bigZbig   Ja nazywam swoje klasy zgodnie z konwencją przyjęt...   24.01.2007, 16:19:57
|- - DjKermit   Cytat(bigZbig @ 24.01.2007, 16:19:57 ...   25.01.2007, 17:52:44
- - Turgon   bigZbig: Podobno szybsze jest Ale zastanowię się ...   25.01.2007, 15:51:37
- - bigZbig   Jak init może być szybsze od tablicy skoro parsują...   25.01.2007, 19:34:40
- - LBO   hmmm, parsowanie to parsowanie... i "na oko...   25.01.2007, 19:49:48
- - Turgon   Ja zapisuje zserializowaną tablicę i działa sprawn...   25.01.2007, 20:23:36
- - Strzałek   O autoloadzie oraz przykładowa klasa generująca ma...   20.02.2007, 09:29:17
- - Sh4dow   Mnie zastanawia ile samo odwolanie sie do funkcji ...   1.03.2007, 12:58:38
|- - J4r0d   Cytat(Sh4dow @ 1.03.2007, 12:58:38 ) ...   1.03.2007, 13:05:04
- - athabus   Wydaje mi się, że troszeczkę dochodzimy do granic ...   1.03.2007, 13:34:02
- - grzegorzr   uuu, temat trochę się zakurzył post...   14.07.2007, 06:10:01
- - Ludvik   Chce Ci się pisać te mapy w YAML? Bo nie widzę sen...   14.07.2007, 09:29:16
- - deirathe   [PHP] pobierz, plaintext <?phpfunction __autolo...   19.07.2007, 18:32:24
- - athabus   Ta funkcja wymaga aby wszystkie klasy były w jedny...   20.07.2007, 11:52:43
- - Turgon   athabus: W takim przypadku mapy się wydają być jed...   20.07.2007, 22:11:45
- - athabus   wiem i sam właśnie map używam   20.07.2007, 22:31:07
- - kaniagandzowski   W klasie ClassLoader autora DjKermit brakuje warun...   27.08.2007, 18:05:25
- - Sagnitor   Być może uznacie mnie za archeologa, ale temat był...   5.07.2011, 12:53:10
- - by_ikar   CytatOba sposoby posiadają zalety i wady. Pierwszy...   5.07.2011, 13:29:25
- - Sagnitor   Nie zaznaczyłem tego w swojej wypowiedzi, ale właś...   5.07.2011, 13:39:31
- - Crozin   Zacznijmy od tego, że w niewielkich projektach wyd...   5.07.2011, 13:51:01
- - by_ikar   W tym temacie jeden z użytkowników zamieścił właśn...   5.07.2011, 14:38:53
- - Sagnitor   @Crozin Twój sposób numer dwa byłby bardzo dobry ...   6.07.2011, 10:52:46
- - Crozin   @Sagnitor: Nie widzę większych problemów:[PHP] pob...   6.07.2011, 11:17:27
- - Sagnitor   Problem jest kiedy niektórzy piszą w ten sposób: ...   6.07.2011, 11:26:29
- - Zyx   Sagnitor -> mapa nie wyklucza stosowania konwen...   13.07.2011, 10:14:52
- - wookieb   A to nie wystarczy już http://pl2.php.net/manual/p...   13.07.2011, 10:36:11
- - Zyx   Jak najbardziej wystarczy, tylko trzeba pamiętać o...   13.07.2011, 11:12:50
- - Hellz   Dlaczego nie trzymać mapy autoloadera w memcached,...   13.07.2011, 18:01:10
- - Zyx   Bo jest kilka razy wolniejszy od APC*, a sama mapa...   14.07.2011, 18:47:00
- - Hellz   Cytatco nie powinno dziwić, jeśli weźmiemy pod uwa...   14.07.2011, 23:38:34
- - Zyx   Wykorzystanie gniazd uniksowych niewiele Ci da. Tr...   16.07.2011, 12:20:44
2 Stron V  < 1 2


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 Wersja Lo-Fi Aktualny czas: 16.06.2024 - 14:18