Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa używająca objektu drugiej klasy?
Forum PHP.pl > Forum > PHP > Object-oriented programming
Apocalyptiq
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
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 smile.gif
Apocalyptiq
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
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
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! winksmiley.jpg
plurr
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.
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.