emSon
28.03.2015, 12:15:23
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
28.03.2015, 12:17:42
Z racji, ze nie uraczyles nas kodem, to strzelam:
$this->jakisobiekt->jakiespole = 'jakas wartosc';
emSon
28.03.2015, 12:27:23
Fakt, kod by się przydał. W komentarzu jest napisane o co mi chodzi.
<?php
abstract class hero{
}
class warrior extends hero{
public $hp = 100;
public $def = 100;
public $str = 100;
public function __construct($name){
$this->name = $name;
echo "Witaj dzielny wojowniku. Masz na imię $this->name, masz atrybuty o wartościach $this->hp $this->def $this->str <br />"; }
public function upgrade(){
if($this->exp < 100){
$req = 100 - $this->exp;
echo " Nie masz wystarczającej ilości punktów doświadczenia, aby ulepszyć postać. Brakująca ilość : $req"; }
}
public function fight($person){
// $person = objekt o nazwie $person;
// echo "Chcesz walczyć z <imie obiektu o nazwie $person>";
}
}
$w1 = new warrior('Edek');
$w2 = new warrior('Maciek');
?>
nospor
28.03.2015, 12:32:51
public function fight($person){
echo "Chcesz walczyć z ".$person->name;
}
a name wypadaloby okreslic jako
public $name = '';
emSon
28.03.2015, 12:37:10
Wielkie dzięki. Sprawa, jak się okazuje, była banalnie prosta.