Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] obiektowosc i troche pytan
Forum PHP.pl > Forum > Przedszkole
kamiseq
witam,
nie bede pytal jak stworzyc klase w php i czy wogole programowanie obiektowe ma sens, bo takie pytania sa nie na miejscu.

od poczatku.
chcialbym stworzyc np galerie zdjec i przy okazji pobawic sie troche php wykorzystujac obiekty. i tu rodzi sie wiele pytan.
1)galeria to zbior zdjec ktore same w sobie sa obiektami(maja jakas zawartosc, wymair, nazwe, itp). wiec moj obiekt bedzie czysto opisowy, bedzie niejako kopiowal to co juz jest zapisane w zdjeciu, dostarczal zebranych metod do odczytania tych informacji czy modyfikacji zdjecia.

a i tak koniec koncow celem nie jest utworzenie obiektu samego w sobie lecz stworzenia pliku HTML i zycie takiego obiektu sie konczy. tak czy siak sie zakonczy jak uzytkownik zamknie przegladarke.

dlatego uwazam ze uzywanie obiektow w php ma ograniczone zastosowanie.

widze tu 2 podejscia.
w momencie kiedy chce tylko pokazac zdjecia w przegladarce stosuje podejscie podstawowe lub wykorzystuje metody statyczne. kiedy uzytkonik bedzie chcial zmodyfikowac konkretne zdjecie - tworze obiekt i wykonuje operacje.

reasumujac
przy tworzeniu stron dzialamy na fizycznych obiektach(zdjecie, rekord tabeli z informacja o uzytkowniku, lista ksiazek) w wiekszosci przypadkow nie musimy nic z nimi robic a tylko je pokazac. dlatego stworzenie duzej ilosci obiektow przechowujacych pelna informacje mija sie z celem i jest malo wydajne.

chcialbym poznac wasza opinie na ten temat, bo mam male doswiadczenie w pisaniu obiektowym w php, a nie chce wywazac otwartych drzwi

pozdrawiam guitar.gif
sticker
wg mnie musisz wiedzieć jakiego rozmiaru masz projekt... to jest podstawowe kryterium stosowania obiektowości, bo po co wytaczać działa na domek z zapałek.. Zaraz zwolenicy programowania obiektowego będą mnie chcieli ukrzyżować ale osobiście twierdze że do małych prostych skrytów nie potrzebne jest budowanie obiektów bo to tylko będzie spowalniąc działanie skryptu (chociaż wydajność przy mały skrypcie i tak sie nie bedzie liczyć )
Musisz wykorzystać swoją intuicję kiedy stosować obiekty i kiedy je wykorzystywać. Jeżeli piszesz jakies oskryptowanie i wiesz że nigdzie Ci sie to nie przyda bo polega na prostym przeworzeniu formularza to nie ma sensu zaprzęgać całego mechanizmu obiektowego. Natomiast jeżeli korzystasz z jakiejś bazy i przechowujesz coś co symuluje "rzeczywistość" ( wiesz że coś spełnia kryteria by być obiektem obiektem i nie bedzie sie składał tylko z konstruktora getów i toString() ) to jak najbardziej warto zastosować podejście obiektowe.


---

Osobiście brałem udział w towrzeniu dwóch dużych portali muzycznych i mobilnych i tam bez obiektowoście nie można sie było obejść. Warstwa biznesowa wyszła dość skomplikowana i nie wiem kto by to ogarnął proceduralnym podejście (chyba tylko maniacy asemblera lub VHDLa )
kamiseq
moje pytanie dotyczy tez pewnej wydajnosci uzycia pamieci, itp
Cysiaczek
Owszem - jeśli powołujesz obiekt, to wypadałoby, aby można zrobić z nim coś więcej niż tylko wyświetlić. Pamiętaj jednak, że nie zawsze powołanie obiektu musi być całkowite. Nie musisz wywoływać wszystkich jego metod, czy wypełniać wszystkich wartości. Po prostu konstruujesz obiekt etapowo, co zaoszczędza wiele czasu.

Używanie obiektów ma ograniczenia. Można jednak zawsze zserializować dane (obiekt), a to również oszczędza sporo czasu.
Zgadzam się do wypowiedzą stickera dotyczącej zastosowania oop, ale do galerii zdjęć polecam obiekty.

Pozdrawiam.
kamiseq
Cytat(Cysiaczek @ 21.11.2006, 09:27:17 ) *
Pamiętaj jednak, że nie zawsze powołanie obiektu musi być całkowite. Nie musisz wywoływać wszystkich jego metod, czy wypełniać wszystkich wartości. Po prostu konstruujesz obiekt etapowo, co zaoszczędza wiele czasu.

co przez to rozumiesz? powolujac obiekt rezewujesz iles miejsca w pamieci i czas na to posiwecony jest staly(?) bez wzgledu czy wypelnisz go konkretnymi wartosciami. myle sie?
Cysiaczek
Głowy nie dam, ale chyba się nie mylisz. Nie w tym jednak rzecz. Jest różnica pomiędzy obiektami tak konstruowanymi:
  1. <?php
  2. class obrazek{
  3. function __construct(){
  4. //pozyskanie danych
  5. }
  6. }
  7. ?>

a tak:
  1. <?php
  2. class obrazek{
  3. function __construct(){
  4. $this->getBaseData();
  5. }
  6.  
  7. function getBaseData(){
  8. //pozyskiwanie danych podstawowych
  9. }
  10.  
  11. function getContextData(){
  12. //pozyskiwanie danych zeleżnych od kontekstu
  13. }
  14. }
  15.  
  16. //i teraz zawsze
  17. $obrazek=new obrazek();
  18.  
  19. //ale już niekoniecznie, bo to zależy od użytkownika
  20. $obrazek->getContextData();
  21. ?>


Pomijając użyteczność przykładu... które rozwiązanie jest elastyczniejsze?
Jedyne, co się dzieje przy konstrukcji obiektu, to wczytanie niezbędnych danych, a reszta jest po prostu zadeklarowana.
php samo decyduje o przydzielanie pamięci w zależności od potrzeb.

Pozdrawiam.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.