I would like to have my abstract parent class have a method that would be inherited by a subclass which would allow that subclass to iterate through all of it's variables (both the variables inherited from the parent, and it's own variables).
At the moment if I implement this method in the parent, then only the parent's variables will be iterated over:
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
On the other hand, if I put the assignToMembers
function in the subclass, then only the subclass's members are iterated over.
Because I want my assignToMembers()
function to be usable by a number of subclasses, I don't want to have to implement it in every one, only in the parent class, but it looks like I will have to unless it can access that class's members.
Is there any way to acheive this?
Thanks in advance.