Chciałbym, aby moja abstrakcyjna klasa nadrzędna posiadała metodę, która byłaby dziedziczona przez podklasę, która pozwoliłaby tej podklasie na iterację wszystkich jej zmiennych (zarówno zmiennych dziedziczonych z rodzic i jego własne zmienne).Funkcja macierzysta PHP nie jest w stanie zobaczyć elementów podklasy
W tej chwili gdybym wdrożenia tej metody w nadrzędnej, to tylko zmienne jednostki dominującej będzie powtórzyć w ciągu:
class MyObject {
private $one;
private $two;
private $three;
function assignToMembers() {
$xx = 1;
foreach($this as $key => $value) {
echo "key: ".$key."<br />";
$this->$key = $xx;
$xx++;
}
}
public function getOne() {
return $this->one;
}
public function getTwo() {
return $this->two;
}
public function getThree() {
return $this->three;
}
}
class MyObjectSubclass extends MyObject {
private $four;
private $five;
public function getFour() {
return $this->four;
}
public function getFive() {
return $this->five;
}
}
$o = new MyObjectSubclass();
$o->assignToMembers();
echo $o->getOne()." ";
echo $o->getTwo()." ";
echo $o->getThree()." ";
echo $o->getFour()." ";
echo $o->getFive()." ";
// This prints 1 2 3
Z drugiej strony, jeśli kładę assignToMembers
funkcja w podklasie, a następnie tylko członkowie podklasy są iterowane.
Ponieważ chcę, aby moja funkcja assignToMembers()
była użyteczna dla wielu podklas, nie chcę jej implementować w każdym, tylko w klasie nadrzędnej, ale wygląda na to, że będę musiał, chyba że może dostęp do członków tej klasy.
Czy istnieje sposób, aby to osiągnąć?
Z góry dziękuję.
Dziękuję bardzo. – Joe