Apocalyptiq
6.03.2009, 18:09:10
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.
Spawnm
6.03.2009, 18:14:32
a daj w klasie np:
<?php
public function __construct($db){
$this->db=$db;
}
?>
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
Apocalyptiq
6.03.2009, 18:30:53
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ę?
maniekl2
6.03.2009, 18:47:14
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.
Apocalyptiq
6.03.2009, 19:07:24
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!
plurr
9.03.2009, 17:51:05
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.