Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy rozbijać na wiele klas?
Fifi209
post
Post #1





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Piszę grę, zastanawiam się jak rozplanować sobie klasy, czy wrzucić wszystko do worka czy nie, chodzi dokładnie o to, że obecnie mam dwie klasy, jedna służy do zarządzania samymi użytkownikami, tj. logowanie, zmiana hasła, rejestracja etc. druga natomiast obsługuje rzeczy związane stricte z grą, punkty, surowce. Zastanawiam się czy połączyć je jakoś, czy zostawić w takiej postaci. Póki co wiem, za co każda odpowiada i gdzie czego szukać, wydaje się to przemawiać na korzyść tego rozwiązania.

Drugie pytanie: chcę mieć możliwość zwrócenia danych w odpowiednim formacie np. JSON, XML, z początku myślałem o rozwiązaniach rodem z C#, np. klasa.metoda().toString() odpowiednikiem w php byłaby klasa-> metoda()-> toString() czy da się coś takiego zrobić? Drugim rozwiązaniem jest napisanie klasy, która przyjmowałaby dwa argumenty dane i format w jakim mają zostać zwrócone, jednak druga konstrukcja jest o wiele mniej wygodna.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Ikar póki co są rozbite. I nie chodziło mi o to co podałeś w linku, ten sposób znam ale nie o to mi chodziło.
Wytłumaczę jeszcze raz, chcę to móc wywołać na każdej metodzie w klasie w podany wyżej sposób, ale tak aby ta funkcja automatycznie pobrała wynik działania poprzedniej metody i go odpowiednio obrobiła.
Go to the top of the page
+Quote Post
by_ikar
post
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat(Fifi209 @ 24.01.2012, 09:11:31 ) *
Ikar póki co są rozbite. I nie chodziło mi o to co podałeś w linku, ten sposób znam ale nie o to mi chodziło.
Wytłumaczę jeszcze raz, chcę to móc wywołać na każdej metodzie w klasie w podany wyżej sposób, ale tak aby ta funkcja automatycznie pobrała wynik działania poprzedniej metody i go odpowiednio obrobiła.


W php się tego inaczej nie da zrobić. Musisz zwrócić albo obiekt w którym jesteś, albo utworzyć jakiś obiekt. Generalnie musisz cokolwiek zwrócić żeby móc operować na danych z tej konkretnej metody. Niestety taki jest php (IMG:style_emoticons/default/wink.gif)

Przykład phpion'a jest dobry, ale żeby ci to lepiej pokazać zrobiłbym to tak:

  1. <?php
  2.  
  3.  
  4. class Foo
  5. {
  6. public function method()
  7. {
  8. $res = 'something';
  9.  
  10. return new Response($res);
  11. }
  12. }
  13.  
  14. class Response
  15. {
  16. protected $data;
  17.  
  18. public function __construct($data)
  19. {
  20. $this->data = $data;
  21. }
  22.  
  23. public function toXml()
  24. {
  25. return '<?xml version="1.0" encoding="UTF-8"?>'.$this->data;
  26. }
  27.  
  28. public function toJson()
  29. {
  30. return '{'.$this->data.'}';
  31. }
  32.  
  33. public function toString()
  34. {
  35. return (string) $this->data;
  36. }
  37. }
  38.  
  39. $obj = new Foo();
  40.  
  41. $obj->method()->toXml();
  42. $obj->method()->toJson();
  43. $obj->method()->toString();


Teraz już w sumie powinieneś wiedzieć mniej więcej o co chodzi (IMG:style_emoticons/default/wink.gif)

EDIT: zdecydowanie nie można jeść śniadania jednocześnie pisząc, bo jak widać piszę się jednego posta prawie 20min (IMG:style_emoticons/default/tongue.gif)

Ten post edytował by_ikar 24.01.2012, 09:50:09
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 12:19