Signatur
Beschreibung
uopz_backup ist Teil der UOPZ-Erweiterung (User Operations for Zend) und ermöglicht es, die aktuell registrierte Implementierung einer benannten Funktion oder Klassenmethode intern zu sichern. Der Sicherungspunkt wird von UOPZ selbst verwaltet und kann später über uopz_restore wiederhergestellt werden.
Die Funktion ist primär für Test-Szenarien und Mocking gedacht: Bevor eine Funktion zur Laufzeit mit uopz_function oder uopz_set_return ausgetauscht wird, sichert man sie mit uopz_backup, sodass nach dem Test der ursprüngliche Zustand zuverlässig zurückgesetzt werden kann.
Ohne vorherige Sicherung kann es bei intensiver Nutzung von UOPZ zu dauerhaft veränderten Funktionsdefinitionen kommen, was in phpunit-basierten Test-Suites oder Long-Running-Prozessen zu schwer nachvollziehbaren Fehlern führen kann. uopz_backup schafft hier Abhilfe.
Hinweis: Diese Funktion steht nur zur Verfügung, wenn die uopz-PHP-Erweiterung installiert und aktiviert ist. Sie ist ausschließlich für Entwicklungs- und Testumgebungen gedacht.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $class | string | Optionaler Name der Klasse, deren Methode gesichert werden soll. Wird dieser Parameter weggelassen, bezieht sich function auf eine globale Funktion. |
|
| $function Pflicht | string | Name der Funktion oder Methode, die gesichert werden soll. |
Rückgabewert
Beispiele
Globale Funktion sichern und wiederherstellen
<?php
// Originalfunktion definieren
function meine_funktion(): string {
return 'original';
}
// Sicherungspunkt erstellen
uopz_backup('meine_funktion');
// Funktion durch Mock ersetzen
uopz_function('meine_funktion', function(): string {
return 'mock';
});
echo meine_funktion(); // Gibt 'mock' aus
// Original wiederherstellen
uopz_restore('meine_funktion');
echo meine_funktion(); // Gibt 'original' aus
Klassenmethode sichern und wiederherstellen
<?php
class Mailer {
public function send(string $to): string {
return "E-Mail an {$to} gesendet.";
}
}
// Methode der Klasse sichern
uopz_backup('Mailer', 'send');
// Methode durch Test-Stub ersetzen
uopz_function('Mailer', 'send', function(string $to): string {
return "(Test) Keine E-Mail an {$to} gesendet.";
});
$mailer = new Mailer();
echo $mailer->send('test@example.com');
// Gibt '(Test) Keine E-Mail an test@example.com gesendet.' aus
// Originalmethode wiederherstellen
uopz_restore('Mailer', 'send');
echo $mailer->send('test@example.com');
// Gibt 'E-Mail an test@example.com gesendet.' aus
// Wichtig · Fallstricke
Nur für Entwicklungs- und Testumgebungen: uopz_backup und die gesamte UOPZ-Erweiterung sollten niemals in Produktionsumgebungen eingesetzt werden, da das Überschreiben von Funktionen zur Laufzeit zu unvorhersehbarem Verhalten, Sicherheitslücken und schwer debuggbaren Fehlern führen kann.
Diese Funktion ist seit UOPZ 5.x als veraltet markiert und wurde in neueren Versionen der Erweiterung entfernt. In UOPZ >= 5.0 übernimmt der automatische Rückgabewert-Mechanismus diese Aufgabe. Vor der Nutzung sollte die installierte UOPZ-Version geprüft werden.
Wenn uopz_backup für eine Funktion aufgerufen wird, die noch nicht existiert, kann es zu einem Fehler kommen. Es empfiehlt sich daher, die Existenz der Funktion mit function_exists zu prüfen.