Signatur
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:
|
|
| $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
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');
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";
// 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.