Start · Sprachen · PHP · Referenz · uopz_unset_return

uopz_unset_return

Funktion

Entfernt einen zuvor mit <code>uopz_set_return()</code> gesetzten Rückgabewert einer Funktion oder Methode.

seit PHP 5.0.0 Kategorie: misc

Signatur

uopz_unset_return(string $function): bool

Beschreibung

uopz_unset_return() gehört zur UOPZ-Erweiterung (User Operations for Zend) und macht die Wirkung von uopz_set_return() rückgängig. Nach dem Aufruf verhält sich die betroffene Funktion wieder wie gewohnt und gibt ihren originalen Rückgabewert zurück.

Diese Funktion ist besonders in Unit-Tests nützlich, wenn ein zuvor gemockter Rückgabewert nach dem Test zurückgesetzt werden muss, um den Ausgangszustand wiederherzustellen. So lassen sich saubere Testisolierungen ohne gegenseitige Beeinflussung umsetzen.

Soll der Rückgabewert einer Methode einer bestimmten Klasse entfernt werden, steht die zweiargumentige Variante uopz_unset_return(string $class, string $function) zur Verfügung, bei der der Klassenname als erster Parameter übergeben wird.

Die UOPZ-Erweiterung ist ausschließlich für Entwicklungs- und Testumgebungen gedacht und sollte niemals in einer Produktivumgebung eingesetzt werden, da sie tief in die Laufzeit von PHP eingreift.

Parameter

Name Typ Default Beschreibung
$class string Optionaler Klassenname, wenn der Rückgabewert einer Methode entfernt werden soll.
$function Pflicht string Name der Funktion oder Methode, deren zuvor gesetzter Rückgabewert entfernt werden soll.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Rückgabewert erfolgreich entfernt wurde, andernfalls false.

Beispiele

Rückgabewert einer Funktion zurücksetzen

<?php
// Originale Funktion
function berechnePreis(): float {
    return 19.99;
}

// Rückgabewert überschreiben
uopz_set_return('berechnePreis', 0.0);
echo berechnePreis(); // Gibt 0.0 aus

// Überschriebenen Rückgabewert wieder entfernen
uopz_unset_return('berechnePreis');
echo berechnePreis(); // Gibt wieder 19.99 aus
0 19.99

Rückgabewert einer Klassenmethode zurücksetzen

<?php
class Zahlungsgateway {
    public function transaktionDurchfuehren(): bool {
        // Echte Transaktion...
        return true;
    }
}

// Im Test: Methode mocken, damit sie false zurückgibt
uopz_set_return('Zahlungsgateway', 'transaktionDurchfuehren', false);

$gateway = new Zahlungsgateway();
var_dump($gateway->transaktionDurchfuehren()); // bool(false)

// Nach dem Test: Mock entfernen
uopz_unset_return('Zahlungsgateway', 'transaktionDurchfuehren');
var_dump($gateway->transaktionDurchfuehren()); // bool(true)
bool(false) bool(true)

// Wichtig · Fallstricke

Nur für Testumgebungen: Die UOPZ-Erweiterung greift tief in den PHP-Interpreter ein. Sie sollte ausschließlich in Entwicklungs- und Testumgebungen verwendet werden und darf unter keinen Umständen auf Produktivservern aktiviert sein.

Wenn uopz_unset_return() aufgerufen wird, ohne dass zuvor ein Rückgabewert mit uopz_set_return() gesetzt wurde, gibt die Funktion false zurück und hat keinen weiteren Effekt.

Die Erweiterung ist nicht Teil des PHP-Kerns und muss separat installiert werden (z. B. via PECL: pecl install uopz).