Signatur
Beschreibung
uopz_get_static() ist Teil der UOPZ-Erweiterung (User Operations for Zend) und ermöglicht es, zur Laufzeit die aktuellen Werte aller statischen Variablen einer Funktion oder Methode auszulesen. Das zurückgegebene Array enthält die Variablennamen als Schlüssel und die zugehörigen aktuellen Werte als Werte.
Die Funktion ist besonders nützlich im Bereich des Unit-Testings und des Debuggings: Sie erlaubt es, den inneren Zustand einer Funktion bezüglich ihrer statischen Variablen zu inspizieren, ohne den Quellcode der zu testenden Funktion selbst verändern zu müssen.
Um statische Variablen einer Methode zu lesen, übergibt man den Klassenname als erstes und den Methodennamen als zweites Argument. Für freie Funktionen genügt der Funktionsname als erstes Argument, während das zweite Argument weggelassen wird.
Zusammen mit uopz_set_static() lässt sich so der statische Zustand einer Funktion vollständig kontrollieren, was bei der Isolation von Testfällen hilfreich ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $class_or_function Pflicht | string | Der Name der Klasse (wenn eine Methode abgefragt wird) oder der Name der freien Funktion, deren statische Variablen ausgelesen werden sollen. | |
| $function | string | Der Name der Methode innerhalb der im ersten Parameter angegebenen Klasse. Wird dieser Parameter weggelassen, behandelt PHP das erste Argument als Funktionsnamen. |
Rückgabewert
Beispiele
Statische Variable einer freien Funktion auslesen
<?php
function counter() {
static $count = 0;
$count++;
return $count;
}
// Funktion mehrmals aufrufen, um den Zähler zu erhöhen
counter();
counter();
counter();
// Statische Variablen der Funktion auslesen
$statics = uopz_get_static('counter');
print_r($statics);
Statische Variable einer Klassen-Methode auslesen
<?php
class Logger {
public function log(string $message): void {
static $callCount = 0;
static $lastMessage = null;
$callCount++;
$lastMessage = $message;
echo "[{$callCount}] {$message}" . PHP_EOL;
}
}
$logger = new Logger();
$logger->log('Start');
$logger->log('Verarbeitung');
$logger->log('Ende');
// Statische Variablen der Methode inspizieren
$statics = uopz_get_static('Logger', 'log');
print_r($statics);
// Wichtig · Fallstricke
Hinweis: uopz_get_static() erfordert die Installation der UOPZ-PECL-Erweiterung, die standardmäßig nicht in PHP enthalten ist. Die Funktion sollte ausschließlich in Entwicklungs- und Testumgebungen eingesetzt werden – niemals in Produktivsystemen.
Da UOPZ tief in den Zend-Engine-Mechanismus eingreift, können unerwartete Seiteneffekte auftreten, insbesondere bei der Verwendung zusammen mit OpCode-Caches wie OPcache. Es wird empfohlen, OPcache während der Nutzung von UOPZ zu deaktivieren.
Das Verhalten der Funktion kann je nach UOPZ-Version variieren. Die Signatur mit zwei Parametern (Klasse, Methode) gilt ab UOPZ 5.x; ältere Versionen nutzen möglicherweise eine andere Aufrufkonvention.