Start · Sprachen · PHP · Referenz · uopz_copy

uopz_copy

Funktion

Kopiert eine Funktion oder Methode innerhalb der UOPZ-Erweiterung an einen neuen Namen.

seit PHP 2.0.2 Kategorie: misc

Signatur

uopz_copy(string $class, string $function, string $target): bool

Beschreibung

uopz_copy ist Teil der UOPZ-Erweiterung (User Operations for Zend) und ermöglicht es, eine bestehende Funktion oder Methode unter einem neuen Namen zu duplizieren. Die Originafunktion bleibt dabei unverändert erhalten.

Diese Funktion ist primär für Testzwecke und das Mocking von Funktionen gedacht. Sie erlaubt es, die ursprüngliche Implementierung einer Funktion unter einem anderen Namen zu sichern, bevor sie beispielsweise mit uopz_set_return oder uopz_function überschrieben wird. So kann der Originalcode nach dem Test wiederhergestellt werden.

Wenn der dritte Parameter $target angegeben wird, wird die Funktion $function der Klasse $class unter dem Namen $target kopiert. Wird nur eine globale Funktion (ohne Klassenkontext) kopiert, kann die Signatur entsprechend angepasst werden.

Hinweis: UOPZ ist ausschließlich für die Verwendung in Entwicklungs- und Testumgebungen vorgesehen und sollte niemals in Produktivsystemen eingesetzt werden.

Parameter

Name Typ Default Beschreibung
$class Pflicht string Der Name der Klasse, in der sich die zu kopierende Methode befindet. Bei globalen Funktionen wird dieser Parameter als Quell-Funktionsname verwendet.
$function Pflicht string Der Name der Methode bzw. Funktion, die kopiert werden soll.
$target Pflicht string Der Name, unter dem die kopierte Funktion bzw. Methode registriert werden soll.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Funktion erfolgreich kopiert wurde, andernfalls false.

Beispiele

Methode sichern und überschreiben

<?php
// Originalimplementierung sichern
uopz_copy(PDO::class, 'query', 'query_original');

// Methode überschreiben (z. B. im Test)
uopz_set_return(PDO::class, 'query', null);

// Test ausführen ...

// Original wiederherstellen (konzeptionell – erfordert weitere UOPZ-Schritte)
echo "Originalfunktion gesichert als query_original";
?>
Originalfunktion gesichert als query_original

Globale Funktion kopieren

<?php
// Eine globale Funktion definieren
function my_function(): string {
    return 'Originalwert';
}

// Funktion kopieren (bei globalen Funktionen: class = Quellname, function = Zielname)
uopz_copy('my_function', 'my_function_backup');

// Backup aufrufen
echo my_function_backup(); // Originalwert
?>
Originalwert

// Wichtig · Fallstricke

Achtung: Die UOPZ-Erweiterung ist ausschließlich für Test- und Entwicklungsumgebungen gedacht. Der Einsatz auf Produktionssystemen kann zu unvorhersehbarem Verhalten, Abstürzen und Sicherheitslücken führen.

Die genaue Signatur von uopz_copy kann je nach installierter UOPZ-Version leicht variieren. Bei globalen Funktionen (ohne Klassenkontext) lautet die Signatur uopz_copy(string $function, string $target): bool.

UOPZ arbeitet auf der Ebene des Zend-Opcache und greift tief in die PHP-Laufzeitumgebung ein – Vorsicht beim Einsatz zusammen mit anderen Extensions, die ebenfalls Funktionen modifizieren.