![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 2 Dołączył: 13.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam taką ideę, aby dla przyśpieszenia działania rozdzielić jedną klasę na kilka plików. Dajmy to na przykładzie systemu użytkowników - w jednym pliku mam główne definicje tej klasy do załadowania go z bazy danych, drugi plik dorzuci do tej klasy funkcje obsługi znajomych, trzeci prywatnych wiadomości etc - mógłbym dołączać do głównego obiektu klasy tylko te funkcje, które są mi w danej chwili potrzebn.e Idzie to jakoś zrobić? Jak? Z góry dzięki za pomoc Ten post edytował Snowak 12.06.2008, 20:20:17 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Wszystko co wymieniłeś powinno stanowić osobne klasy. Używasz tych, które są ci aktualnie potrzebne (__autoload()).
|
|
|
![]()
Post
#3
|
|
Grupa: Postów: 31 Pomógł: 3 Dołączył: 25.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Moim zdaniem powinnnieneś rozdzielić sobie wszystko na poszczególne klasy do różnych zadań (tak jak wyżej). A szybkość w twoim wypadku ( kiedy wszystko znajduje sie w jednym pliku) raczej nic nie zmienia, jesli masz wszystkie metody w jednej klasie to zrobi sie tam balagan, a chyba od tego ma programowanie obiektowe uwolnic nie ? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@Snowak
Jak sam nieświadomie zobaczyłeś, te rzeczy obsługa bazy danych, znajomych itp. to są osobne rzeczy i jak napisała phpion powinny się znajdować w osobnych klasy. Co do Twojego pomysłu, co coś czuję że chcesz przekombinować, dobrym podejściem jest jedna klasa <=> jeden plik. Do tego nie przejmował bym się tak ilością jaką ma parsować interpreter, bo często przez robienie czegoś nie tak więcej to zajmuje czasu niż załadowanie wszystkiego. Samo połączenie z bazą jest 10 krotnie (nie wnikając w szczegóły) dłuższe niż ładowanie przeciętnej wielkości pliku. Więc się nie ma co tym przejmować. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(manual) You can NOT break up a class definition into multiple files. You also can NOT break a class definition into multiple PHP blocks, unless the break is within a method declaration. The following will not work:
Ten post edytował radex_p 13.06.2008, 12:08:41 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 441 Pomógł: 71 Dołączył: 3.09.2007 Skąd: wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ale trzeba też zachować zdrowy rozsądek przy dzieleniu na pliki, bo require też jest "drogie" w sensie czasu jaki potrzeba na załączenie pliku
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@zzeus
Niestety za wygodę czasem się płaci. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ale trzeba też zachować zdrowy rozsądek przy dzieleniu na pliki, bo require też jest "drogie" w sensie czasu jaki potrzeba na załączenie pliku Ee tam, nie aż takie drogie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Przeprowadziłem mały test, w którym załączałem 10 pustych plików php. Czas jaki wyszedł był praktycznie zerowy. |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
No nie wiem - mi autoloader w pewnym momencie zabierał jakieś 30% czasu całego żądania (pomijając łączenie się z bazą). 10 plików to mała próba. Przeciętny FW ładuje kilkadziesiąt, a nawet kilkaset plików.
Pozdrawiam. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 12 Dołączył: 27.01.2007 Skąd: north Poziom: 158 Tytuł: Miszcz Ostrzeżenie: (0%) ![]() ![]() |
Takie trzy grosze odemnie: Dużą oszczędnością jest zmapowanie (raz na jakąkolwiek modyfikację systemu plików) całej struktury katalogów pod kątem klas zawartych w plikach, a następnie zcache'owanie tych danych aby potem wygodnie je odczytywać w __autoload(). Zapobiegamy wtedy czasochłonnemu skanowaniu wszystkich folderów aplikacji (jeżeli mamy ich więcej niż 1) przy ładowaniu jakiejkolwiek klasy.
A co do includowania milionów plików... jeżeli generujemy jakąś zawartość - też warto ją zcache'ować a potem wyświetlić z cache oszczędzając uruchamiania machiny generującej tą zawartość - oszczędność czasu i mocy procesora. ;] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 27.09.2025 - 16:20 |