assertÜberprüft eine Assertion (Zusicherung)
&reftitle.description;
boolassertmixedassertionThrowablestringnulldescription&null;assert ermöglicht es, Expectations (Annahmen) zu
definieren: Zusicherungen, die in Entwicklungs- und Testumgebungen wirken,
aber so optimiert sind, dass sie in Produktionsumgebungen keinen
Mehraufwand verursachen.
Zusicherungen können zur Unterstützung der Fehlersuche verwendet werden.
So können sie &zb; für Plausibilitätsprüfungen für Vorbedingungen verwendet
werden, die immer &true; sein sollten, und die andernfalls auf
Programmierfehler hinweisen.
Ein weiterer Anwendungsfall ist, sicherzustellen, dass bestimmte Merkmale
wie Funktionen von Erweiterungen oder bestimmte Grenzwerte und Eigenschaften
des Systems vorhanden sind.
Da Zusicherungen so konfiguriert werden können, dass sie deaktiviert
werden, sollten sie nicht für normale
Laufzeitoperationen wie die Überprüfung von Eingabeparametern verwendet
werden. Als Faustregel gilt, dass sich der Code auch bei deaktivierter
Zusicherungsüberprüfung so verhalten sollte wie erwartet.
assert prüft, ob die in
assertion angegebene Annahme zutrifft. Wenn dies
nicht der Fall ist und das Ergebnis somit &false; ist, werden die
entsprechenden Maßnahmen ergriffen, je nachdem wie
assert konfiguriert wurde.
Das Verhalten von assert wird durch die folgenden
INI-Einstellungen bestimmt:
&ConfigureOptions; für assert&Name;&Default;&Description;&Changelog;zend.assertions11: erzeugt Code und führt ihn aus
(Entwicklungsmodus).
0: erzeugt Code, aber führt ihn zur Laufzeit
nicht aus.
-1: erzeugt keinen Code (Produktionsmodus).
assert.active&true;
Wenn &false;, prüft assert die Annahme nicht und
gibt automatisch &true; zurück.
Seit PHP 8.3.0 veraltet.
assert.callback&null;
Eine benutzerdefinierte Funktion, die aufgerufen wird, wenn eine
Zusicherung fehlschlägt. Sie sollte die folgende Signatur haben:
voidassert_callbackstringfileintlinenullassertionstringdescription
Vor PHP 8.0.0 musste die Signatur des Callbacks wie folgt lauten:
voidassert_callbackstringfileintlinestringassertionstringdescription
Seit PHP 8.3.0 veraltet.
assert.exception&true;
Wenn &true;, wird ein AssertionError ausgelöst,
wenn die Erwartung nicht erfüllt wird.
Seit PHP 8.3.0 veraltet.
assert.bail&false;
Wenn &true;, wird die Ausführung des PHP-Skripts gestoppt, wenn die
Erwartung nicht erfüllt wird.
Seit PHP 8.3.0 veraltet.
assert.warning&true;
Wenn &true;, wird eine E_WARNING ausgegeben, wenn
die Erwartung nicht erfüllt wird. Diese INI-Einstellung hat keine
Auswirkung, wenn
assert.exception aktiviert
ist.
Seit PHP 8.3.0 veraltet.
&reftitle.parameters;
assertion
Dies ist ein beliebiger Ausdruck, der einen Wert zurückgibt, der
ausgeführt wird und dessen Ergebnis verwendet wird, um anzuzeigen, ob
die Zusicherung erfolgreich war oder fehlschlug.
Vor PHP 8.0.0 wurde assertion, wenn es vom Typ
string war, als PHP-Code interpretiert und über
eval ausgeführt. Diese Zeichenkette wurde dann
als drittes Argument an den Callback übergeben. Dieses Verhalten war
in PHP 7.2.0 MISSBILLIGT, und wurde in PHP 8.0.0
ENTFERNT.
description
Wenn description eine Instanz von
Throwable ist, wird sie nur ausgelöst, wenn die
assertion ausgeführt wird und fehlschlägt.
Seit PHP 8.0.0 wird dies durchgeführt bevor ein
möglicherweise definierter Zusicherungs-Callback aufgerufen wird.
Seit PHP 8.0.0 wird das &object; unabhängig von der Einstellung von
assert.exception
ausgelöst.
Seit PHP 8.0.0 hat die Einstellung von
assert.bail in diesem Fall
keine Wirkung mehr.
Wenn description vom Typ &string; ist, wird
diese Nachricht verwendet, wenn eine Exception oder eine Warnung
ausgegeben wird. Eine optionale Beschreibung, die in die Fehlermeldung
aufgenommen wird, wenn die assertion
fehlschlägt.
description kann weggelassen werden.
Die Standardbeschreibung entspricht dem Quellcode für den Aufruf von
assert und wird zur Kompilierzeit erstellt.
&reftitle.returnvalues;
Wenn mindestens eine der folgenden Bedingungen erfüllt ist, gibt
assert immer &true; zurück:
zend.assertions=0zend.assertions=-1assert.active=0assert.exception=1assert.bail=1
An description wird ein benutzerdefiniertes
Exception-Objekt übergeben.
Wenn keine der Bedingungen wahr ist, gibt assert
&true; zurück, sofern assertion wahr ist, ansonsten
&false;.
&reftitle.changelog;
&Version;&Description;8.3.0
Alle INI-Einstellungen für assert. sind veraltet.
8.0.0assert wertet Zeichenketten nicht mehr aus,
sondern behandelt sie stattdessen wie jeden anderen Parameter.
Anstelle von assert('$a == $b') sollte
assert($a == $b) verwendet werden. Die
&php.ini;-Direktive assert.quiet_eval und die
Konstante ASSERT_QUIET_EVAL wurden ebenfalls
entfernt, da sie keine Auswirkungen mehr haben.
8.0.0
Wenn description eine Instanz von
Throwable ist, wird nun ein Objekt ausgelöst,
wenn die Zusicherung fehlschlägt, unabhängig vom Wert von
assert.exception.
8.0.0
Wenn description eine Instanz von
Throwable ist, wird kein Benutzer-Callback
aufgerufen, auch wenn er gesetzt ist.
8.0.0
Die Deklaration einer Funktion namens assert()
innerhalb eines Namensraums ist nicht mehr erlaubt und führt zu einem
Fehler der Stufe E_COMPILE_ERROR.
7.3.0
Die Deklaration einer Funktion namens assert()
innerhalb eines Namensraums ist veraltet und gibt nun einen
E_DEPRECATED-Hinweis aus.
7.2.0
Die Verwendung eines &string;s als assertion
wird missbilligt. Dies erzeugt nun einen
E_DEPRECATED-Hinweis, wenn sowohl
assert.active als auch
zend.assertions auf
1 gesetzt sind.
&reftitle.examples;
assert-Beispiel
2);
echo 'Hi!';
]]>
Falls Zusicherungen aktiviert sind
(zend.assertions=1),
gibt das obige Beispiel folgendes aus:
2) in example.php:2
Stack trace:
#0 example.php(2): assert(false, 'assert(1 > 2)')
#1 {main}
thrown in example.php on line 2
]]>
Falls Zusicherungen deaktiviert sind (zend.assertions=0
oder zend.assertions=-1), gibt das obige Beispiel
folgendes aus:
Verwenden einer benutzerdefinierten Meldung
2, "Es wurde erwartet, dass eins größer ist als zwei");
echo 'Hi!';
]]>
Falls Zusicherungen aktiviert sind, gibt das obige Beispiel folgendes aus:
Falls Zusicherungen deaktiviert sind, gibt das obige Beispiel folgendes aus:
Verwenden einer benutzerdefinierten Exception-Klasse
2, new ArithmeticAssertionError("Es wurde erwartet, dass eins größer ist als zwei"));
echo 'Hi!';
]]>
Falls Zusicherungen aktiviert sind, gibt das obige Beispiel folgendes aus:
Falls Zusicherungen deaktiviert sind, gibt das obige Beispiel folgendes aus:
&reftitle.seealso;
assert_options