echo $begrüßung;
Laut meinem Klassenverständnis sollte hier "AB" ausgegeben werden. Es wird aber "BB" ausgegeben, weil beidemale die Funktion getText von B aufgerufen wird.
Das dürfte daran liegen, dass in parent::A() das Ergebnis von $this->getText() zurückgegeben wird - $this ist hier aber deine Instanz von B().
Was auch noch unverständlich ist wenn ich auf eine Variable mit $this zugreife, dann wird die Variable der Elternklasse zurückgegeben.
Wenn Kindklassen-Methoden die Elternklassen-Methoden überschreiben, dann werden auch von Methoden, die von der Elternklasse geerbten wurden, die überschreibenden Kindklassen-Methoden aufgerufen. Deswegen überschreibt man sie ja. Wenn man die Funktionalität der überschriebenen (Eltern-)Methode haben möchte, muss man diese in der überschreibenden Methode mit parent::Methodenname() ansprechen. Es gibt keine Möglichkeit dynamisch und gezielt auf eine bestimmte Methode einer Klasse zuzugreifen.
In deinem Beispiel verwendest du außerdem Methodennamen, die dem Klassennamen entsprechen. Diese Bezeichnung ist jedoch für den Konstruktor reserviert.
Unter PHP hat ein Konstruktor keine so gavierende Aufgabe wie in anderen objektorientierten Sprachen. Es ist einfach nur eine Methode, die automatisch beim Instantiieren aufgerufen wird. Deswegen kann man den Konstruktor auch noch weitere Male nach Instantiieren der Klasse aufrufen. Beim automatischen Erstaufruf wird augenscheinlich der Rückgabewert ignoriert, sonst hättest du in $B kein Objekt sondern den String 'BB' stehen.
Obwohl das beschriebene Verhalten möglich ist, ist es doch kein guter Stil, es so anzuwenden.
echo "$verabschiedung $name";