Not sure if I'm missing the point here, but are you simply talking about the last descendant in a class hierarchy, such as:
class A {
protected $var;
public function __construct() {$this->var = 'a';}
public function getVar() { return 'standard: ' . $this->var; }
}
class B extends A {
protected $var;
public function __construct() {$this->var = 'b';}
public function getVar() { return 'standard: ' . $this->var; }
}
class C extends B {
protected $var;
public function __construct() {$this->var = 'c';}
public function getVar() { return '"last": ' . $this->var; }
}
$a = new A();
$b = new B();
$c = new C();
echo $a->getVar();
echo $b->getVar();
echo $c->getVar();
In that case, it is as simple as the above. Even if you construct your classes through recursion, you still need some kind of end case(s), for which you can set up the "last class" to return different things.
And if you have a member variable which may or may not point to another instance of the same class, you can always construct the function to see if $this->var is the instance of that class or not. It will be for all but the last element in the list.