echo $begrüßung;
Habe eine (public) Funktion einer Klasse, in der wiederum eine andere Funktion mit dem Name foo deklariert wird.
Funktionen, die nicht Bestandteil einer Klassendeklaration sind, werden generell global angelegt. Funktionsdeklarationen, die sich innerhalb bedingt auszuführender Blöcke (if oder innerhalb einer anderen Funktion/Methode) befinden, werden erst zur Laufzeit angelegt. Zu diesem Zeitpunkt ist es mit regulären Mitteln nicht mehr möglich, eine Klasse um Funktionen zu erweitern. (Das nicht reguläre Mittel hört auf den Namen classkit.)
Lade ich nun eine weitere Klasse, die ähnlich aufgebaut ist und ebenfalls eine foo-Funktion enthält (nicht die selbe! jedoch mit gleichem Namen), muss ich mir anhören, dass diese Funktion bereits deklariert wurde.
Ja, siehe oben.
Jedoch erfolgt deren Verwendung ausschließlich in der Funktion der Klasse, und zwar der Klasse, in deren Funktion sie auch deklariert wird. Dass die Funktion auch außerhalb verwendet werden kann, ist unerwünscht.
Das ist auf diese Weise nicht zu erreichen.
Zu welchem Zeitpunkt sieht PHP vor, die in der Klasse in deren Funktion erzeugte Funktionen wieder "freizugeben"? Eine un-declare Funktion konnte ich auf php.net nicht finden :(
Gar nicht.
Hoffe Ihr hjabt einen Tipp, der _nicht_ besagt, dass ich die kritische Funktion an einer anderen Stelle deklarieren soll oder einfach umbenennen soll...
Klassenmethoden sind derzeit die einzige Möglichkeit, gleichlautende Funktionsnamen zu verwenden. Namespaces, wie aus anderen Systemen her bekannt, sind, soweit ich das mitbekommen habe, derzeit erst in der Diskussion/Planung.
Außerdem gibt es noch create_function(). Doch das habe ich persönlich immer zugunsten eines anderen Konstrukts vermeiden können.
echo "$verabschiedung $name";