Snowak
12.06.2008, 20:19:30
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
phpion
12.06.2008, 20:27:02
Wszystko co wymieniłeś powinno stanowić osobne klasy. Używasz tych, które są ci aktualnie potrzebne (__autoload()).
MILICJA
12.06.2008, 20:52:17
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 ?
Sedziwoj
13.06.2008, 09:46:24
@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ć.
.radex
13.06.2008, 12:08:24
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:
zzeus
1.07.2008, 09: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
Sedziwoj
1.07.2008, 11:36:54
@zzeus
Niestety za wygodę czasem się płaci.
.radex
4.07.2008, 20:36:02
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

Przeprowadziłem mały test, w którym załączałem 10 pustych plików php. Czas jaki wyszedł był praktycznie zerowy.
Cysiaczek
4.07.2008, 21:37:18
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.
carbolymer
4.07.2008, 23:14:45
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. ;]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.