Start · Sprachen · PHP · Referenz · assert_options

assert_options

Funktion

Setzt oder liest Konfigurationsoptionen für die <code>assert()</code>-Funktion.

seit PHP 4.0.0 Kategorie: misc

Signatur

assert_options(int $what, mixed $value = ?): mixed

Beschreibung

assert_options() erlaubt es, das Verhalten der assert()-Funktion zu steuern, ohne direkt auf php.ini-Direktiven zugreifen zu müssen. Mit dieser Funktion können verschiedene Aspekte wie das Auslösen von Warnungen, das Abbrechen des Skripts bei fehlgeschlagener Assertion oder die Angabe einer Callback-Funktion konfiguriert werden.

Die Funktion gibt immer den aktuellen Wert der gefragten Option zurück — auch wenn gleichzeitig ein neuer Wert gesetzt wird. Wird kein zweites Argument übergeben, kann der aktuelle Wert also einfach abgefragt werden.

Typische Anwendungsfälle sind Debug- und Testumgebungen, in denen Assertions aktiv ausgewertet werden sollen, und Produktivumgebungen, in denen Assertions deaktiviert sein sollen, um keinen Overhead zu erzeugen.

Hinweis: Ab PHP 8.3 ist assert_options() als veraltet (deprecated) markiert. Stattdessen sollten die entsprechenden php.ini-Direktiven (zend.assertions, assert.exception usw.) direkt gesetzt werden.

Parameter

Name Typ Default Beschreibung
$what Pflicht int Eine der Konstanten, die die zu setzende/lesende Option bestimmt:
  • ASSERT_ACTIVE (1) — Aktiviert/deaktiviert assert()-Auswertung.
  • ASSERT_EXCEPTION (6) — Wirft eine AssertionError-Exception bei fehlgeschlagener Assertion (ab PHP 7.0).
  • ASSERT_WARNING (2) — Erzeugt eine PHP-Warnung bei fehlgeschlagener Assertion.
  • ASSERT_BAIL (3) — Bricht das Skript bei fehlgeschlagener Assertion ab.
  • ASSERT_QUIET_EVAL (4) — Deaktiviert Fehlerberichte während der Auswertung (veraltet ab PHP 8.0).
  • ASSERT_CALLBACK (5) — Definiert eine Callback-Funktion, die bei fehlgeschlagener Assertion aufgerufen wird.
$value mixed Der neue Wert für die angegebene Option. Wird dieser Parameter weggelassen, wird nur der aktuelle Wert gelesen. Bei ASSERT_CALLBACK ist ein callable anzugeben.

Rückgabewert

Typ
mixed
Beschreibung
Gibt den vorherigen Wert der angegebenen Option zurück, oder false bei einem Fehler (z. B. ungültiger what-Wert).

Beispiele

Assert-Callback registrieren und Assertion auslösen

<?php
// Callback registrieren, der bei fehlgeschlagener Assertion aufgerufen wird
assert_options(ASSERT_ACTIVE, true);
assert_options(ASSERT_WARNING, false);
assert_options(ASSERT_CALLBACK, function (string $file, int $line, ?string $assertion, string $description = '') {
    echo "Assertion fehlgeschlagen in {$file} (Zeile {$line}): {$description}\n";
});

assert(1 === 2, 'Eins ist nicht gleich Zwei');
Assertion fehlgeschlagen in /pfad/zum/skript.php (Zeile 9): Eins ist nicht gleich Zwei

Aktuellen Wert einer Option abfragen und dann setzen

<?php
// Aktuellen Wert von ASSERT_ACTIVE auslesen
$aktuell = assert_options(ASSERT_ACTIVE);
echo 'ASSERT_ACTIVE war: ' . ($aktuell ? 'aktiviert' : 'deaktiviert') . "\n";

// Assertions deaktivieren
$vorheriger = assert_options(ASSERT_ACTIVE, false);
echo 'Vorheriger Wert: ' . ($vorheriger ? 'aktiviert' : 'deaktiviert') . "\n";
echo 'Neuer Wert: ' . (assert_options(ASSERT_ACTIVE) ? 'aktiviert' : 'deaktiviert') . "\n";
ASSERT_ACTIVE war: aktiviert Vorheriger Wert: aktiviert Neuer Wert: deaktiviert

// Wichtig · Fallstricke

Deprecation: Ab PHP 8.3 ist assert_options() als veraltet markiert und wird in einer zukünftigen PHP-Version entfernt. Nutze stattdessen direkt die php.ini-Direktiven zend.assertions, assert.active, assert.warning, assert.bail, assert.exception und assert.callback oder setze sie per ini_set().

ASSERT_QUIET_EVAL wurde in PHP 8.0 entfernt, da String-Assertions in assert() ebenfalls als veraltet galten.

In Produktivumgebungen sollten Assertions grundsätzlich deaktiviert sein (zend.assertions = -1 in php.ini), da aktive Assertions einen Laufzeit-Overhead verursachen können.

Siehe auch