Ich verstehe zwar nicht, was Du damit erreichen möchtest (sehr gewöhnungsbedürftiger Klassenaufbau), aber folgendes kann ich dir sagen:
Beim Instanzieren von 'functionclass' werden keine Unterobjekte angelegt, da die Kindklassen zwar Methoden und Eigenschaften erben, aber keinerlei werte, die zur Laufzeit von Obejekten der Elternklassen erzeugt werden.
Konkret: die Methode functionclass::base() wird nie aufgerufen und damit werden auch keine Objekte innerhalb dieser Klasse instanzieert.
Jetzt gäbe es die Möglichkeit, die Methode base() zu überarbeiten:
PHP-Code:
public function base() {
$this->tpl = new templateClass();
$this->db = new databaseClass();
$this->func = new functionclass();
$this->func->base();
}
Oder den Codeblock aus base() in den Konstruktor zu legen. Das Ergebnis wäre aber eine unendliche Baumstruktur (sprich, php würde aus dem Konstruktor nicht zurückkommen, da hier neue Objekte erzeugt würden, die im Konstruktor neue Objekte erzeugen, die im Konstruktor neue Objekte erzeugen usw.