Cytat(elnino17 @ 3.07.2014, 21:53:41 )

Witam, napisałem sobie poniższy kawałek kodu lecz nie działa,
class Dodawanie1
{
private $a;
private $b;
public function dodaj($c, $d){
return ($this->a = $c) + ($this->b = $d);
}
}
class Dodawanie2 extends Dodawanie1
{
private $e;
public function dodaj2($h){
return ($this->e = $h) + (parent::dodaj($c, $d));
}
}
$liczba = new Dodawanie1;
echo $liczba->dodaj(7, 5).'<br />';
$liczba2 = new Dodawanie2;
echo $liczba2->dodaj2(2
);
otrzymuję komunikat, że zmienne c i d nie zotały zdefiniowane, nie wiem skąd wynika ten błąd jeżeli za pomocą parenta "dostaje się" do tych zmiennych, przynajmniej tak mi się wydaje, z góry przepraszam jeżeli walnąłem jakąś totalną głupotę w kodzie.
Ale jak sie dostajesz do tych zmiennych ($c,$d)to są tylko argumenty funkcji nie mające nic wspólnego z klasą
class Dodawanie2 extends Dodawanie1
{
private $e;
public function dodaj2($h){
return ($this->e = $h) + ($this->dodaj($this->a, $this->b));
}
}
To zadziała tylko jak pisał Spawnm - daj protected dla $a i $b w klasie nadrzędnej.
parent:: - uzywaj jak zmieniasz funkcje - taka sama nazwa w klasie nadrzednej i podrzednej.