Signatur
Beschreibung
runkit7_function_rename() gehört zur runkit7-Erweiterung und ermöglicht es, eine bereits definierte PHP-Funktion zur Laufzeit unter einem neuen Namen verfügbar zu machen. Der ursprüngliche Name wird dabei entfernt; nach dem Aufruf ist die Funktion ausschließlich unter dem neuen Namen aufrufbar.
Typische Einsatzszenarien sind das Umstrukturieren von Legacy-Code, das Aliasieren von Funktionen ohne Wrapper-Overhead sowie das Umleiten von Funktionsaufrufen in Test- oder Monkey-Patching-Szenarien. Im Produktionsbetrieb sollte diese Funktion nur mit äußerster Vorsicht eingesetzt werden, da sie die globale Funktionsliste dauerhaft verändert.
Zu beachten ist, dass runkit7_function_rename nur auf benutzerdefinierte Funktionen angewendet werden kann. Interne PHP-Funktionen (Built-ins) können nur mit zusätzlicher Konfiguration (runkit.internal_override = 1 in der php.ini) modifiziert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $source_name Pflicht | string | Der aktuelle Name der Funktion, die umbenannt werden soll. Bei internen Funktionen ist runkit.internal_override erforderlich. |
|
| $target_name Pflicht | string | Der neue Name, unter dem die Funktion künftig aufgerufen werden soll. Der Zielname darf noch nicht vergeben sein. |
Rückgabewert
true zurück, wenn die Umbenennung erfolgreich war. Gibt false zurück, wenn die Quellfunktion nicht existiert, der Zielname bereits vergeben ist oder ein anderer Fehler auftritt.Beispiele
Einfache Umbenennung einer benutzerdefinierten Funktion
<?php
function greet(string $name): string {
return "Hallo, $name!";
}
// Funktion unter neuem Namen verfügbar machen
runkit7_function_rename('greet', 'sayHello');
// Aufruf über den neuen Namen
echo sayHello('Welt'); // Hallo, Welt!
// Alter Name ist nicht mehr verfügbar
// greet('Welt'); // Fatal error: Call to undefined function greet()
Funktion im Test-Kontext temporär umleiten (Monkey Patching)
<?php
function calculateTax(float $amount): float {
return $amount * 0.19;
}
// Originalfunktion sichern
runkit7_function_rename('calculateTax', 'calculateTax_original');
// Stub für Tests definieren
runkit7_function_add('calculateTax', '$amount', 'return 0.0;');
echo calculateTax(100.0); // 0 (Stub)
// Nach dem Test wiederherstellen
runkit7_function_remove('calculateTax');
runkit7_function_rename('calculateTax_original', 'calculateTax');
echo calculateTax(100.0); // 19
// Wichtig · Fallstricke
Vorsicht im Produktionsbetrieb: Das Umbenennen von Funktionen zur Laufzeit ist ein tiefer Eingriff in den PHP-Interpreter-Zustand. In Multithread-Umgebungen (z. B. mit PHP-Threads) kann es zu Race Conditions kommen.
Die Funktion steht nur zur Verfügung, wenn die runkit7-Erweiterung installiert und geladen ist. Sie ist nicht Teil der PHP-Standardinstallation. Für interne Funktionen muss in der php.ini runkit.internal_override = On gesetzt sein, sonst schlägt die Umbenennung fehl.
Der Zielname darf zum Zeitpunkt des Aufrufs nicht bereits als Funktion definiert sein, da die Umbenennung sonst mit false fehlschlägt. Namenskonflikte sollten vor dem Aufruf geprüft werden, z. B. mit function_exists().