Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa do oceny - początkujący
GreenGo
post
Post #1





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


Witam,
napisałem sobie taką małą klasę, która odpowiada za pozycję użytkownika na mapie i chciałbym spytać czy to w ogóle ma coś wspólnego z OOP, co poprawić, jak ją lepiej napisać?

  1.  
  2. class Map {
  3. private $position_x;
  4. private $position_y;
  5. private $uesr_id;
  6. private $action_query;
  7.  
  8. public function __construct()
  9. {
  10. $this->position_x = $_POST['position_x'];
  11. $this->position_y = $_POST['position_y'];
  12. $this->user_id = $_SESSION['id'];
  13. }
  14.  
  15. public function doDate ()
  16. // funkcja odpowiada za rozdzielenie daty z postaci unixowej na godziny minuty i sekundy abym mógł potem przekazać je do odliczania w JS.
  17. // w tabeli 'aciotn' przechowuję id użytkonika poruszającego się po mapie, nowe współrzędne oraz czas rozpoczęcia i zakończenia wędrówki
  18. {
  19. $record_exist = mysql_query("SELECT * FROM `action` WHERE userid = '{$this->user_id}'");
  20.  
  21. $w = mysql_fetch_array($record_exist);
  22. $last_sec = $w['end_time'] - time();
  23.  
  24. $last_day = floor($last_sec/86400);
  25. $last_hour = floor(($last_sec - $last_day*86400)/3600);
  26. $last_min = floor(($last_sec - $last_day*86400 - $last_hour*3600)/60);
  27. $last_sec = $last_sec - $last_day*86400 - $last_hour*3600 - $last_min*60;
  28.  
  29. $time = array($last_hour, $last_min, $last_sec);
  30. return $time;
  31. }
  32. else
  33. return false;
  34. }
  35.  
  36.  
  37. public function endTime ()
  38. //funkcja odpowiada za obliczenie czasu zakończenia wędrówki na podstawie współrzędnych przed rozpoczęciem wędrówki jak i miejsca
  39. //docelowego
  40. {
  41. $end_time_query = mysql_query("SELECT * FROM `character` WHERE userid = '$this->user_id'");
  42. $w = mysql_fetch_array($end_time_query);
  43. $position = $w['position'];
  44. $pos = explode(",", $position);
  45.  
  46. $end_time = time() + round(sqrt(pow(abs($pos[0] - $this->position_x), 2) + pow(abs($pos[1] - $this->position_y), 2)), 2);
  47. return $end_time;
  48. }
  49.  
  50. public function position ()
  51. // w bazie przechowuje współrzędne w postaci np: 450,655. Ta funkcja wyświetla pozycje wszystkich graczy rozdzielając współrzędne na x i y.
  52.  
  53. {
  54.  
  55. $position_query = mysql_query("SELECT * FROM `character` ");
  56. $i = 0;
  57. $arr = array();
  58. while ($w = mysql_fetch_array($position_query)) {
  59. $position = $w['position'];
  60. $pos = explode(",", $position);
  61.  
  62. $arr[$i] = $pos[0];
  63. $arr[$i+1] = $pos[1];
  64. $i+=2;
  65. }
  66. return $arr ;
  67. }
  68.  
  69. public function changePosition()
  70. // dodanie do tabeli action informacji o danym poruszaniu się (kto, o której, do której, i gdzie)
  71. {
  72. $start_time = time();
  73. mysql_query("INSERT INTO action (userid, start_time, end_time, new_position) value ('{$this->user_id}', '$start_time', '{$this->endTime()}', '{$this->position_x},{$this->position_y}')");
  74. }
  75.  
  76. public function updatePosition()
  77. // po odliczeniu czasu w jakim uzytkownik będzie się przemieszczał na nową lokalizację funkca ta usunie akcje z tabeli "action" i uaktualni obecne położenie uzytkownika
  78. {
  79. $update_position_query = mysql_query("SELECT * FROM `action` WHERE userid = '{$this->user_id}'");
  80. $w = mysql_fetch_array($update_position_query);
  81. if(mysql_affected_rows() > 0 AND time() >= $w['end_time']){
  82.  
  83.  
  84. $new_position = $w['new_position'];
  85. mysql_query("UPDATE `character` SET `position` = '$new_position' WHERE userid = '{$this->user_id}'");
  86. mysql_query("DELETE FROM `action` WHERE `userid` = '{$this->user_id}'");
  87.  
  88. }
  89.  
  90. }
  91. }


Dopiero zaczyna pisać klasy w php i chciałbym nabierać dobrych nawyków więc byłbym wdzięczny za uwagi (IMG:style_emoticons/default/smile.gif)
Pozdrawiam.
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: 24.12.2025 - 18:01