Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jedna klasa w kilku plikach
Snowak
post
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
Go to the top of the page
+Quote Post
phpion
post
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()).
Go to the top of the page
+Quote Post
MILICJA
post
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)
Go to the top of the page
+Quote Post
Sedziwoj
post
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ć.
Go to the top of the page
+Quote Post
.radex
post
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
Go to the top of the page
+Quote Post
zzeus
post
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
Go to the top of the page
+Quote Post
Sedziwoj
post
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.
Go to the top of the page
+Quote Post
.radex
post
Post #8





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


Cytat(zzeus @ 1.07.2008, 10:37:27 ) *
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.
Go to the top of the page
+Quote Post
Cysiaczek
post
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.
Go to the top of the page
+Quote Post
carbolymer
post
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. ;]
Go to the top of the page
+Quote Post

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 Aktualny czas: 27.09.2025 - 16:20