Start · Sprachen · PHP · Referenz · uopz_set_static

uopz_set_static

Funktion

Setzt die statischen Variablen im Gültigkeitsbereich einer Funktion oder Methode zur Laufzeit.

seit PHP 5.0.0 Kategorie: misc

Signatur

uopz_set_static(string $function, array $static): void

Beschreibung

uopz_set_static() ist Teil der UOPZ-Erweiterung (User Operations for Zend) und ermöglicht es, die statischen Variablen einer Funktion oder Methode zur Laufzeit zu überschreiben. Statische Variablen einer Funktion behalten ihren Wert zwischen Aufrufen – mit uopz_set_static() kann dieser Zustand von außen manipuliert werden.

Die Funktion ist primär für Unit-Tests gedacht, in denen ein definierter Ausgangszustand für statische Variablen benötigt wird, ohne die Funktion selbst zu verändern. So lassen sich Seiteneffekte durch persistent gespeicherte Werte gezielt kontrollieren und reproduzierbare Testszenarien erstellen.

Für Methoden einer Klasse existiert eine Überladung der Funktion: uopz_set_static(string $class, string $function, array $static). In diesem Fall wird die Klasse als erstes Argument übergeben, gefolgt vom Methodennamen und dem Array der neuen statischen Variablenwerte.

Hinweis: UOPZ ist eine Entwicklungs- und Testwerkzeug-Erweiterung und sollte niemals in Produktionsumgebungen eingesetzt werden, da sie tief in den Zend-Engine-Betrieb eingreift.

Parameter

Name Typ Default Beschreibung
$class string Der Name der Klasse, wenn eine Methode angesprochen wird. Wird weggelassen, wenn eine globale Funktion gemeint ist.
$function Pflicht string Der Name der Funktion oder Methode, deren statische Variablen gesetzt werden sollen.
$static Pflicht array Ein assoziatives Array, das die Namen der statischen Variablen (ohne $) als Schlüssel und die gewünschten neuen Werte als Werte enthält.

Rückgabewert

Typ
void
Beschreibung
Diese Funktion gibt keinen Wert zurück.

Beispiele

Statische Variable einer globalen Funktion zurücksetzen

<?php
function counter(): int {
    static $count = 0;
    return ++$count;
}

// Mehrfach aufrufen
echo counter(); // 1
echo counter(); // 2
echo counter(); // 3

// Statische Variable zurücksetzen
uopz_set_static('counter', ['count' => 0]);

echo counter(); // 1 (zurückgesetzt)
echo counter(); // 2
1 2 3 1 2

Statische Variable einer Klassenmethode manipulieren

<?php
class RequestLogger {
    public function logCount(): int {
        static $requests = 0;
        return ++$requests;
    }
}

$logger = new RequestLogger();
echo $logger->logCount(); // 1
echo $logger->logCount(); // 2

// Zähler für Testfall auf einen definierten Wert setzen
uopz_set_static('RequestLogger', 'logCount', ['requests' => 9]);

echo $logger->logCount(); // 10
1 2 10

// Wichtig · Fallstricke

Nur für Entwicklung und Tests: Die UOPZ-Erweiterung (ext/uopz) greift tief in die Zend Engine ein und kann zu unvorhersehbarem Verhalten führen, wenn sie in Produktionssystemen eingesetzt wird. Sie sollte ausschließlich in isolierten Test- oder Entwicklungsumgebungen verwendet werden.

Die Funktion wirft eine RuntimeException, wenn die angegebene Funktion oder Methode nicht existiert. Stellen Sie sicher, dass die Funktion korrekt eingebunden ist, bevor Sie uopz_set_static() aufrufen.

Das Pendant uopz_get_static() erlaubt es, den aktuellen Stand der statischen Variablen auszulesen, was zusammen mit uopz_set_static() ein vollständiges Werkzeug für das Testen statischer Zustände bietet.