Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa używająca objektu drugiej klasy?, Klasa do obsługi baz danych wykorzystywana przez inną
Apocalyptiq
post
Post #1





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


Zaczynam pisać grę karcianą przez przeglądarkę (coś jak yu-gi-oh). Dotąd raczej omijałem klasy, poza obsługą bazy danych. No ale nie tworząc klas, robi się większy bałagan w funkcjach :-) I pomyślałem, aby utworzyć klasę obsługującą pojedynki użytkowników - byłyby w niej funkcje odpowiadające za start pojedynku (dodanie do bazy danych odpowiedniego rekordu), dodawania wydarzeń pojedynku itp. No i ta klasa aby działać, potrzebuje połączenia z bazą danych. Mam 'na zewnątrz' obiekt do obsługi bazy danych - wykonuje na nim wszelkie operacje z mysql, typu getOne, getRow, getAll, insertId itp. Tylko teraz jak ten obiekt wrzucić w tą klasę do pojedynków?

I takie pytanie co do samej klasy - warto taką stworzyć, czy może lepiej pozostać przy samych funkcjach? Co mogę zyskać tworząc klasę? No bo teraz, aby dodać wydarzenie pojedynku, odpalam funkcję addDuelEvent z parametrami: numer stołu, wydarzenie, numer użytkownika (1/2), numer wydarzenia, dodatkowe dane. Przy klasie musiałbym dodatkowo przed tym utworzyć klasę $duel=new Duel(), a potem odwołać się do $duel->addDuelEvent(numer stołu,....). Widzicie jakieś korzyści, jakie mogę uzyskać stosując tu klasę zamiast samych funkcji? :-) Jakoś klasa wydaje mi się bardziej uporządkowana, ale dotąd za bardzo się w nie nie zagłębiałem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




a daj w klasie np:
  1. <?php
  2. public function __construct($db){
  3.    $this->db=$db;
  4.  }
  5. ?>

i przy wywołaniu klasy daj $klasa=new klasa($uchwyt_db);

teraz w klasie przez $this->db->nazwa_funkcji(); wywołujesz funkcjie z klasy mysqla (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Apocalyptiq
post
Post #3





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


Działa, dzięki! :-)

A teraz od strony praktycznej - przyda się stworzenie takiej klasy? Ja przyzwyczaiłem się do programowania strukturalnego, jakoś mi to nie przeszkadzało, ale coś czuje że można z klas wyciągnąć jakieś korzyści :-) Plusem jest to, że klasa skleiłaby w kupe wszystkie funkcje odnośnie pojedynku. Coś jeszcze można uzyskać stosując klasę?
Go to the top of the page
+Quote Post
maniekl2
post
Post #4





Grupa: Zarejestrowani
Postów: 162
Pomógł: 29
Dołączył: 6.04.2008

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


Dla mnie jest o wiele wygodniej. Zawsze wiem gdzie co jest. A przykładowo musisz pojedynek umieścić w kilku miejscach. To nie musisz za każdym razem powtarzać kodu tylko wystarczy jedna linijka.
Go to the top of the page
+Quote Post
Apocalyptiq
post
Post #5





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


No, spodobały mi się te klasy :-) Utworzyłem sobie funkcję, po której wywołaniu w obiekcie zapisuje mi ona w zmiennej $table informacje o stole o podanym numerze. Następnie odwołując się np. do funkcji dodającej wydarzenie, nie muszę już podawać numeru stołu, bo informacje o stole już są zapisane :-) Dzięki za informacje! (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował Apocalyptiq 6.03.2009, 19:08:04
Go to the top of the page
+Quote Post
plurr
post
Post #6





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

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


strukturalnie to teraz mozesz pisac proste skrypciki, jesli chodzi o wieksze aplikacje to tylko obiektowka wchodzi w gre. Idziesz do pracy - OOP jest wymogiem.

Co do twojej klasy to lepiej adaptowac niz dziedziczyc, do tego mozesz wymusic typ obiektu - masz wtedy podpowiadanie metod np w eclipse.
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: 22.08.2025 - 23:19