Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Obiekt gracza
Salur
post
Post #1





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

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


witam, tworzę obiekt gracza (wszystkie dane uzytkownika) z którego zmiennych będę korzystał w całej grze.

Teraz pytanie, zrobiłem aby wyswietlało w tablicy czyli cos takiego:

  1. $gracz = array('level' => 1, name = 'Salur'); itd.


Teraz problem w tym że nie wiem jak z takiego obiektu dalej korzystac we wszystkich plikach. Mam umieścić go w jednym pliku i includować do każdego?

I teraz drugi, jak mam we wszystkich plikach z tego korzystac? tak?

  1. $gracz['level'] itd?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Skie
post
Post #2





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Przede wszystkim to tablica array nie jest obiektem. Jest milion sposobów w jaki możesz to zrobić, z czego najlepiej będzie zrobić to w taki sposób, że:

1. Stwórz klasę PlayerModel, która jest modelem gracza. W Twoim przykładzie byłoby to coś w stylu:

  1. class PlayerModel
  2. {
  3. protected $level;
  4. protected $name;
  5.  
  6. // dodatkowe pola
  7.  
  8. public function __construct(array $rawPlayerData = [])
  9. {
  10. $this->level = isset($rawPlayerData['level']) ? $rawPlayerData['level'] : 0;
  11. $this->name = isset($rawPlayerData['level']) ? $rawPlayerData['level'] : '';
  12. }
  13.  
  14. // tutaj jakieś dodatkowe settery, gettery
  15. }


2. Stwórz fabrykę graczy, która będzie zajmowała się tworzeniem PlayerModel korzystając z jakiejś bazy graczy - np. MySQL

  1. class PlayerFactory
  2. {
  3. // ...
  4.  
  5. public function createPlayer($id)
  6. {
  7. // $this->storage to handler to klasy, która zajmuje się połączeniem z Twoim storage - może to być to PDO dla MySQL albo jakiś ORM albo cokolwiek używasz
  8. $data = $this->storage->getPlayerData($id)->fetchArray();
  9.  
  10. return new PlayerModel($data);
  11. }
  12.  
  13. // ...
  14. }


3. Teraz wszędzie, gdzie chcesz skorzystać stworzyć PlayerModel(), możesz użyć coś takiego:

  1. $factory = new PlayerFactory(...);
  2. $player = $factory->createPlayer($playerID);


4. W funkcjach metodach, gdzie chcesz użyć tego modelu z kolei możesz go hintować:

  1. public function doSomethingToPlayer(PlayerModel $player)
  2. {
  3. $player->doSomething();
  4. }


5. W razie rozwoju projektu, możesz fabrykę graczy umieścić wewnątrz Dependency Injection Containera.
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: 14.10.2025 - 09:10