name = $name; $this->nachname = $nachname;} static public function gibGeld($betrag){return "{$betrag} Franken"; } static protected function sagHallo($name){return "Vater sagt 'Hallo {$name}'";} } //Klasse Kind. Abgeleitet von Vater und Mutter //Die Ableitungen werden durch die Abstrakte Klasse AbstractMultiExtends durchgeführt //Die Parentklassen werden im Constructeur angehängt //Das simuliert das Verhalten von 'class Kind extends Mutter, Vater{' class Kind extends AbstractMultiExtends{ public function __construct(){ parent::addExtendedClass('Mutter', 48); parent::addExtendedClass('Vater', array('Thomas', 'Muster')); } public function mutterSagtHallo(){ //Die Funktion sagHallo() ist in beiden Parents definiert. Da Mutter aber zuerst als //Parent definiert wurde, hat sie vorrang return $this->sagHallo('Max Muster'); } public function getName(){ return "Max {$this->nachname}"; } } //Test define('BRNL', "
\n"); $ich = new Kind(); echo $ich->name.BRNL; echo $ich->gibEssen().BRNL; echo $ich->gibGeld(10).BRNL; echo $ich->getName().BRNL; echo $ich->mutterSagtHallo().BRNL; echo $ich->nachname; /* Ausgabe: Apfel 10 Franken Max Muster Mutter sagt 'Hallo Max Muster' Muster */ ?>