Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zmienianie wartości atrybutów obiektu
Forum PHP.pl > Forum > Przedszkole
emSon
Witam. Dosyć niedawno zacząłem uczyć się PHP. Niemal od razu nakierowałem swe kroki na programowanie obiektowe. Za źródło wiedzy służy mi "PHP i MYSQL. Vademecum Profesjonalisty, wydanie IV".
Tam jednak nie znalazłem nic o edytowaniu atrybutów obiektu w funkcji. Opiszę swój problem.

Mam abstrakcyjną klasę postać. W niej są podklasy , wymienianie ich nie ma większego sensu. Mam też funkcję fight zawartą w każdej podklasie. Mój zamysł polegał na tym, aby przy wywołaniu funkcji fight sprawdzić kto ma lepsze statystyki i wygranemu dodać doświadczenie. Jednak nigdzie nie mogę natrafić na to, jak modyfikować atrybuty innego obiektu, niż tego , którym wywołałem funkcję. Wiem ,że to dla wielu z was banalne, jednak dla mnie stanowi problem. Dzięki z góry za pomoc.

PS: To mój pierwszy post na forum, tak więc witam :D
nospor
Z racji, ze nie uraczyles nas kodem, to strzelam:

$this->jakisobiekt->jakiespole = 'jakas wartosc';
emSon
Fakt, kod by się przydał. W komentarzu jest napisane o co mi chodzi.

  1. <?php
  2. abstract class hero{
  3. }
  4.  
  5. class warrior extends hero{
  6. public $hp = 100;
  7. public $def = 100;
  8. public $str = 100;
  9.  
  10. public function __construct($name){
  11. $this->name = $name;
  12. echo "Witaj dzielny wojowniku. Masz na imię $this->name, masz atrybuty o wartościach $this->hp $this->def $this->str <br />";
  13. }
  14.  
  15. public function upgrade(){
  16. if($this->exp < 100){
  17. $req = 100 - $this->exp;
  18. echo " Nie masz wystarczającej ilości punktów doświadczenia, aby ulepszyć postać. Brakująca ilość : $req";
  19. }
  20. }
  21.  
  22. public function fight($person){
  23.  
  24. // $person = objekt o nazwie $person;
  25. // echo "Chcesz walczyć z <imie obiektu o nazwie $person>";
  26. }
  27. }
  28.  
  29. $w1 = new warrior('Edek');
  30. $w2 = new warrior('Maciek');
  31.  
  32. ?>
nospor
  1. public function fight($person){
  2.  
  3. echo "Chcesz walczyć z ".$person->name;
  4.  
  5. }

a name wypadaloby okreslic jako
public $name = '';
emSon
Wielkie dzięki. Sprawa, jak się okazuje, była banalnie prosta.
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.