Signatur
Beschreibung
uopz_get_return() ist Teil der uopz-Erweiterung (User Operations for Zend), die hauptsächlich für Unit-Tests und Mocking verwendet wird. Die Funktion ruft den Wert ab, der zuvor über uopz_set_return() für eine bestimmte Funktion oder Klassenmethode registriert wurde.
Wird kein Klassenname angegeben, bezieht sich die Abfrage auf eine globale Funktion. Mit einem Klassenargument kann der Rückgabewert einer bestimmten Methode ermittelt werden. Dies ist vor allem im Testumfeld nützlich, um zu prüfen, ob ein Mock korrekt konfiguriert wurde.
Wenn für die angegebene Funktion bzw. Methode kein Rückgabewert gesetzt wurde, gibt die Funktion null zurück. Der zurückgegebene Wert kann ein skalarer Wert oder eine Closure sein – je nachdem, was mit uopz_set_return() gesetzt wurde.
Diese Funktion ist ausschließlich für Test- und Debugging-Zwecke geeignet und sollte niemals in produktivem Code eingesetzt werden, da sie das normale Verhalten des PHP-Interpreters verändert.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $class | string | null | Optionaler Klassenname. Wird angegeben, wird der Rückgabewert der Methode function dieser Klasse abgerufen. |
| $function Pflicht | string | Name der Funktion oder Methode, deren gesetzter Rückgabewert abgerufen werden soll. |
Rückgabewert
uopz_set_return() definiert wurde. Wurde kein Wert gesetzt, wird null zurückgegeben.Beispiele
Rückgabewert einer globalen Funktion abrufen
<?php
// Voraussetzung: uopz-Erweiterung ist installiert und aktiv
// Rückgabewert für eine globale Funktion setzen
uopz_set_return('strpos', 42);
// Gesetzten Rückgabewert abrufen
$value = uopz_get_return('strpos');
var_dump($value); // int(42)
// Rückgabewert wieder zurücksetzen
uopz_unset_return('strpos');
Rückgabewert einer Klassenmethode abrufen
<?php
// Voraussetzung: uopz-Erweiterung ist installiert und aktiv
class PaymentGateway
{
public function charge(float $amount): bool
{
// Echte Zahlungslogik ...
return true;
}
}
// Mock: charge() soll immer false zurückgeben
uopz_set_return(PaymentGateway::class, 'charge', false);
// Prüfen, welcher Wert gesetzt wurde
$mockValue = uopz_get_return(PaymentGateway::class, 'charge');
var_dump($mockValue); // bool(false)
$gw = new PaymentGateway();
var_dump($gw->charge(99.99)); // bool(false) — wird durch uopz überschrieben
// Mock aufheben
uopz_unset_return(PaymentGateway::class, 'charge');
// Wichtig · Fallstricke
Achtung: Die uopz-Erweiterung ist ausschließlich für Entwicklungs- und Testumgebungen gedacht. Der Einsatz in produktiven Systemen ist gefährlich, da Funktionen dauerhaft überschrieben werden und das Verhalten des Interpreters global beeinflusst wird.
Die Erweiterung muss explizit in der php.ini aktiviert werden (extension=uopz). Ab PHP 8.x werden bestimmte interne Funktionen möglicherweise nicht mehr vollständig unterstützt. Prüfe stets die Kompatibilität mit der eingesetzten PHP-Version.
Rückgabewerte, die als Closure gesetzt wurden (mit dem dritten Parameter $execute = true in uopz_set_return()), werden von uopz_get_return() als Closure-Objekt zurückgegeben, nicht als der berechnete Rückgabewert der Closure.