Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: obiekty w php
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
Braszynka
pisze system do obslugi biblioteki,chcialam zeby byl fajnie modularny,wiec podzielilam go na klasy i takie tam.i wszystko bylo dobrze,bo w sumie fajnie sie tworzy nowe dane za pomoca obiektow(tylko new i hop do tabeli za pomoca mysql_query),w ten sposob w klasie obslugujacej ksiazki mam dane o nich jako wlasciwosci oraz w tym momencie dwie funkcje - konstruktor i dodawanie,ale...zastanawiam sie jak w podobny sposob zrealizowac edycje i usuwanie i czy wogole sie oplaca.
myslalam zeby zrobic to tak,ze chce usunac ksiazke jakas tam z listy,no to tworze tyle obiektow ile ma lista,wyswietlam je,a nastepnie usuwam ten pasujacy do tego ktory chce usunac,no ale jak bede miec tysiac ksiazek a usuwac bede jedna to chyba ladna bzdura.no ale tylko w ten sposob moge korzystac z funkcji usuwania w klasie ksiazki.
i wlasnie nie wiem czy zrezygnowac z tego usuwania w klasie i zrobic poza klasa zwykle funkcje do usuwania ktorej argumentem bedzie jakies id ksiazki np? no ale czy to nie bedzie "mniej elegancko" niz na klasach?
jak myslicie?
Ludvik
Dobrym wyjściem jest stworzenie klasy pojedynczej książki oraz kontenera. Kontener by się zajmował pobieraniem listy książek, które ciebie interesują i przypisywaniu danych z bazy do obiektów. Jeden obiekt = jedna książka. Oczywiście klasa książka (powiedzmy, że tak ją nazwiemy) posiada wszystkie informacje. Wtedy jest sens dopisywania dwóch metod do klasy książka - do edycji i usuwania. Myślę, że to jest najbardziej eleganckie rozwiązanie. Mam nadzieję, że opisałem to w miare zrozumiale. Jeszcze można to przedstawić w formie interfejsów.
  1. <?php
  2.  
  3. interface Kontener
  4. {
  5. // Pobiera dane z bazy i tworzy obiekty.
  6. public function pobierzKsiazki($od, $ilosc);
  7. // Zwraca obiekt klasy Ksiazka.
  8. public function ksiazka($id);
  9. }
  10.  
  11. interface Ksiazka
  12. {
  13. // Przypisywaniu danych do zmienny nie przerabiam - kwestia zapotrzebowania.
  14. // Usuwa książkę.
  15. public function usun();
  16. // Poprawia poprzednie dane z bazy na nowe - przypisane do zmiennych wewn.
  17. public function zmien();
  18. }
  19.  
  20. ?>


Przynajmniej ja tak to widzę.
Vengeance
kiedys bodajrze @hawk w pewnej dyskusji na jakiś tam mój problem
stwierdził, że raczej usuwanie powinno być w kontenerze. Czemu?
Kod
$ksiazka = new Ksiazka($jakiesID)
$ksiazka->usun();


co w tym momencie reprezentuje obiekt $ksiazka? ;]
Ludvik
Możesz wyzerować wartości przy usuwaniu i zwracać nulle przy dostępie do książki, ale masz rację, lepiej będzie w kontenerze usuwanie umieścić.
Vengeance
tak w ogóle polecam także autorowi wątku zainteresować się czymś co nazywają DAO
Braszynka
mysle,ze rozumiem o co chodzi z tym kontenerem,ze tez sama na to nie wpadlam;)
co do dao to mi sie jakos niebezpieczenie z accessem kojarzy.tak czy inaczej dzieki:)
bela
Cytat(Braszynka @ 2004-12-29 21:17:32)
mysle,ze rozumiem o co chodzi z tym kontenerem,ze tez sama na to nie wpadlam;)
co do dao to mi sie jakos niebezpieczenie z accessem kojarzy.tak czy inaczej dzieki:)

a mi jakos z Javą winksmiley.jpg
hubertsk
a ja bym polecił jakieś mapowanie O/R, np Propel
super fajna rzecz - tworzy za Ciebie obiekty odpowiadające obiektom w DB... masz też metody do szukania, dodawania, kasowania...
I mi to się kojarzy z Hibernate z Javy tongue.gif

Pozdrawiam
hawk
No bez przesady. Między propel a hibernate jest cała przepaść. Hibernate dla php nie ma i pewnie nie będzie, chociaż na sitepoincie można zobaczyć ciekawe próby. Co innego hibernowanie w Javie raz na jakiś czas, a co innego w php setki? razy na sekundę.
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.