Start · Sprachen · PHP · Referenz · uopz_restore

uopz_restore

Funktion

Stellt eine zuvor mit <code>uopz_backup</code> gesicherte Funktion in ihren ursprünglichen Zustand wieder her.

seit PHP 2.0.0 Kategorie: misc

Signatur

uopz_restore(string $function): void

Beschreibung

uopz_restore ist Teil der UOPZ-Extension (User Operations for Zend), die primär für Unit-Tests und das Mocking von PHP-Funktionen entwickelt wurde. Die Funktion stellt eine Funktion wieder her, die zuvor mit uopz_backup gesichert und dann möglicherweise mit uopz_set_return oder uopz_rename verändert wurde.

Typischer Einsatz: Im Testsetup wird eine interne oder benutzerdefinierte Funktion durch eine Testversion ersetzt. Nach dem Test sorgt uopz_restore dafür, dass der ursprüngliche Zustand wiederhergestellt wird, sodass nachfolgende Tests nicht beeinflusst werden.

Die Funktion arbeitet ausschließlich auf dem Namen der Funktion und stellt genau den Stand wieder her, der zum Zeitpunkt des uopz_backup-Aufrufs gespeichert wurde. Wurde kein Backup erstellt, hat der Aufruf keine Wirkung.

Wichtig: UOPZ ist eine Entwicklungs- und Testwerkzeug-Extension und sollte niemals in Produktionsumgebungen eingesetzt werden, da sie tief in den Zend-Engine-Mechanismus eingreift.

Parameter

Name Typ Default Beschreibung
$function Pflicht string Der Name der Funktion (ohne Namensraum-Präfix für globale Funktionen), die wiederhergestellt werden soll. Die Funktion muss zuvor mit uopz_backup gesichert worden sein.

Rückgabewert

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

Beispiele

Funktion sichern, ersetzen und wiederherstellen

<?php
// Originale Funktion sichern
uopz_backup('strlen');

// Funktion temporär überschreiben (z. B. mit uopz_set_return)
uopz_set_return('strlen', 42);

echo strlen('Hallo'); // Gibt 42 aus (gemockter Wert)

// Originalfunktion wiederherstellen
uopz_restore('strlen');

echo strlen('Hallo'); // Gibt 5 aus (echter Wert)
42 5

Einsatz in einem Unit-Test-Teardown

<?php
use PHPUnit\Framework\TestCase;

class MyTest extends TestCase
{
    protected function setUp(): void
    {
        // Originale Funktion sichern
        uopz_backup('time');
        // Zeit einfrieren für deterministischen Test
        uopz_set_return('time', 1700000000);
    }

    protected function tearDown(): void
    {
        // Originalfunktion nach jedem Test wiederherstellen
        uopz_restore('time');
    }

    public function testGetTimestamp(): void
    {
        $this->assertEquals(1700000000, time());
    }
}

// Wichtig · Fallstricke

Nur für Entwicklungs- und Testumgebungen: Die UOPZ-Extension manipuliert direkt die Zend-Engine-Internen und ist nicht für den Produktionseinsatz geeignet. Sie kann zu unerwarteten Abstürzen oder Sicherheitsproblemen führen, wenn sie in Live-Systemen aktiviert ist.

Falls uopz_restore aufgerufen wird, ohne dass zuvor ein uopz_backup für dieselbe Funktion ausgeführt wurde, passiert nichts — es wird kein Fehler ausgelöst, aber die Funktion bleibt im aktuellen (möglicherweise veränderten) Zustand.

Ab UOPZ-Version 5 und höher hat sich die API teilweise verändert. Prüfen Sie die Kompatibilität Ihrer UOPZ-Version mit Ihrer PHP-Version, da nicht alle Kombinationen unterstützt werden.