- Kod: Zaznacz cały
<?php
class moja
{
private $z;
function __construct()
{
$this->z=0;
}
function __get($nazwa)
{
return $this->$nazwa."<br>";
}
function __set($nazwa,$wartosc)
{
if($nazwa=='z' && $wartosc >10)
$this->$nazwa=10;
else
$this->$nazwa=$wartosc;
}
}
class moja2 extends moja
{
private $q;
function __construct()
{
$this->q=0;
}
function __set($nazwa,$wartosc)
{
if($nazwa=='q' && $wartosc >10)
$this->$nazwa=100;
else
$this->$nazwa=$wartosc;
}
}
$k = new moja;
echo $k->z;
$k->z=12;
echo $k->z;
echo "<br><br>";
$k2 = new moja2;
echo $k2->q;
$k2->q=12;
echo $k2->q;
?>
Witam
Mam pytanie co do dziedziczenia. W kodzie wyzej i w klasie moja zmienna $z jest prywatna i metody __get i __set dzialaja ok. W klasie moja2 przy prywatnej zmiennej $q juz jest lipa, czemu te funkcje nie dzialaja ? W efekcie operujac na zmiennych klasy moja2 nic sie nie wyswietli. Ale po zmianie $q na protected juz dziala wszystko ok. Czy moglby mi ktos wytlumaczyc dlatego tak sie dzieje ?


