assert
(PHP 4, PHP 5, PHP 7)
assert —
Prüft ab, ob eine Zusicherung FALSE
ist
Beschreibung
PHP 5 und 7
PHP 7
assert() überprüft den übergebenen Parameter
assertion
und verfährt entsprechend,
falls die in assertion
spezifizierte Bedingung FALSE
ist.
Traditionelle Zusicherungen (PHP 5 und 7)
Wird der Parameter assertion
als String
übergeben, so wird der String als PHP-Code interpretiert.
Vorteile der Übergabe des Parameters
assertion
als Zeichenkette sind geringerer Mehraufwand,
wenn die Zusicherungsprüfung deaktiviert ist, und
dass die ausgegebene Meldung die über
assertion
übergebene Zeichenkette enthält.
Wird eine boolesche Bedingung an
assertion
übergeben, wird diese nicht als Parameter an die
Zusicherungsfunktion, die möglicherweise per
assert_options() Funktion definiert wurde, weitergegeben. Die
Bedingung wird vor dem Aufruf der Handler-Funktion in eine Zeichenkette
umgewandelt, und der boolesche Wert FALSE
wird dabei zur leeren
Zeichenkette konvertiert.
assert() sollte nur zum Debuggen des Codes
verwendet werden. Es kann für Plausibilitätsprüfungen verwendet werden, um
auf Bedingungen zu prüfen, die immer TRUE
sein sollten, und die andernfalls
Programmierfehler anzeigen, oder um auf die Verfügbarkeit bestimmter
Merkmale, wie Erweiterungsfunktionen oder bestimmte Systembeschränkungen und
Eigenschaften, zu prüfen.
Zusicherungen sollten nicht für normale Laufzeitoperationen wie die Überprüfung von Eingaben verwendet werden. Als Faustregel sollte der Code immer korrekt funktionieren können, auch wenn die Zusicherungsüberprüfung deaktiviert ist.
Die Optionen für die assert() können über die Funktion assert_options() oder durch ini Settings, die in der Handbuchseite dieser Funktion beschrieben werden, eingestellt werden.
Die Funktion assert_options() und/oder die
ASSERT_CALLBACK
Direktive ermöglicht eine Funktion anzugeben, die
bei fehlschlagender Überprüfung aufgerufen wird.
Callback-Funktionen in Zusammenhang mit assert() sind nützlich, um beispielsweise automatisierte Tests durchzuführen, da die Callback-Funktion über die Information verfügt, von welcher Stelle sie aufgerufen wurde. Auch wenn diese Information mit anderen Methoden zugänglich ist, macht es die Verwendung von Zusicherungen viel schneller und leichter!
Die Callback-Funktion wird mit drei Parametern aufgerufen. Der
erste Parameter enthält den Namen des Scripts, in dem
die Überprüfung statt fand, der zweite Parameter die
Zeilennummer, und der dritte Paramter enthält die über
assertion
angegebene Bedingung
(wobei Literale wie 1 oder "zwei" nicht übergeben werden).
Nutzer von PHP 5.4.8 und höher können ebenfalls ein viertes optionales
Argument angeben, das die description
, die an
assert() übergeben wurde, enthält, wenn diese gesetzt
wurde.
Erwartungen (nur PHP 7)
assert() ist in PHP 7 ein Sprachkonstrukt, das die Definition von Annahmen ermöglicht: Zusicherungen, die in Entwicklungs- und Testumgebungen wirken, aber so optimiert werden, dass sie in Produktionsumgebungen keinen Mehraufwand verursachen.
Während assert_options() noch immer verwendet werden kann, um das oben beschriebene Verhalten aus Gründen der Abwärtskompatibilität zu steuern, sollte Code, der nur für PHP 7 geschrieben wird, die beiden neuen Konfigurationsoptionen zur Steuerung von assert() verwenden, und nicht assert_options() aufrufen.
Direktive | Vorgabewert | Mögliche Werte |
---|---|---|
zend.assertions | 1 |
|
assert.exception | 0 |
|
Parameter-Liste
-
assertion
-
Die Zusicherung. In PHP 5 muss dies entweder ein auszuwertender string sein, oder ein zu testender boolean Ausdruck. In PHP 7 kann dies ebenso ein beliebiger Ausdruck, der einen Wert zurückgibt, sein, der ausgeführt und dessen Ergebnis verwendet wird, um anzuzeigen, ob die Zusicherung erfolgreich war oder fehlschlug.
WarnungDie Verwendung eines string als
assertion
ist von PHP 7.2 an MISSBILLIGT. -
description
-
Eine optionale Beschreibung, die in der Fehlermeldung enthalten sein wird, wenn die
assertion
fehlschlägt. -
exception
-
In PHP 7 kann der zweite Parameter ein Throwable Objekt anstatt eines beschreibenden strings sein, so dass dieses Objekt als Exception geworfen wird, wenn die Zusicherung fehlschlägt und die assert.exception Konfigurationsdirektive aktiviert ist.
Changelog
Version | Beschreibung |
---|---|
7.2.0 |
Die Verwendung eines string als
assertion wurde missbilligt. Dies erzeugt nun
einen E_DEPRECATED Hinweis, wenn sowohl assert.active als auch zend.assertions auf
1 gesetzt sind.
|
7.0.0 |
assert() ist nun ein Sprachkonstrukt und keine
Funktion mehr. assertion kann nun ein Ausdruck
sein. Der zweite Parameter wird nun entweder als
exception interpretiert (wenn ein
Throwable Objekt übergeben wird), oder als
description , was ab PHP 5.4.8 unterstützt wird.
|
5.4.8 |
Der description Parameter wurde hinzugefügt. Die
description wird nun ebenfalls zu einer
Callbackfunktion im ASSERT_CALLBACK Modus als
viertes Argument übergeben.
|
Beispiele
Traditionelle Zusicherungen (PHP 5 und 7)
Beispiel #1 Überprüfung mit benutzerdefinierter Funktion
<?php
// Zusicherungen aktivieren und stumm schalten
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);
// Eine Handlerfunktion erzeugen
function my_assert_handler($file, $line, $code)
{
echo "<hr>Zusicherung fehlgeschlagen:
Datei '$file'<br />
Zeile '$line'<br />
Code '$code'<br /><hr />";
}
// Den Callback definieren
assert_options(ASSERT_CALLBACK, 'my_assert_handler');
// Eine fehlschlagende Zusicherung
assert('mysql_query("")');
?>
Beispiel #2 Verwendung eines benutzerdefinierten Handlers um eine Beschreibung anzuzeigen
<?php
// Zusicherungen aktivieren und stumm schalten
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);
// Eine Handlerfunktion erzeugen
function my_assert_handler($file, $line, $code, $desc = null)
{
echo "Zusicherung fehlgeschlagen in $file:$line: $code";
if ($desc) {
echo ": $desc";
}
echo "\n";
}
// Den Callback definieren
assert_options(ASSERT_CALLBACK, 'my_assert_handler');
// Fehlschlagende Zusicherungen
assert('2 < 1');
assert('2 < 1', 'Zwei ist kleiner als Eins');
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Zusicherung fehlgeschlagen in test.php:21: 2 < 1 Zusicherung fehlgeschlagen in test.php:22: 2 < 1: Zwei ist kleiner als Eins
Annahmen (nur PHP 7)
Beispiel #3 Annahmen ohne benutzerdefinierte Exception
<?php
assert(true == false);
echo 'Hi!';
?>
Ist zend.assertions auf 0 gesetzt, gibt das obige Beispiel aus:
Hi!
Ist zend.assertions auf 1 und assert.exception auf 0 gesetzt, gibt das obige Beispiel aus:
Warning: assert(): assert(true == false) failed in - on line 2 Hi!
Ist zend.assertions auf 1 und assert.exception auf 1 gesetzt, gibt das obige Beispiel aus:
Fatal error: Uncaught AssertionError: assert(true == false) in -:2 Stack trace: #0 -(2): assert(false, 'assert(true == ...') #1 {main} thrown in - on line 2
Beispiel #4 Annahmen mit einer benutzerdefinierten Exception
<?php
class CustomError extends AssertionError {}
assert(true == false, new CustomError('True ist nicht false!'));
echo 'Hi!';
?>
Ist zend.assertions auf 0 gesetzt, gibt das obige Beispiel aus:
Hi!
Ist zend.assertions auf 1 und assert.exception auf 0 gesetzt, gibt das obige Beispiel aus:
Warning: assert(): CustomError: True ist nicht false! in -:4 Stack trace: #0 {main} failed in - on line 4 Hi!
Ist zend.assertions auf 1 und assert.exception auf 1 gesetzt, gibt das obige Beispiel aus:
Fatal error: Uncaught CustomError: True ist nicht false! in -:4 Stack trace: #0 {main} thrown in - on line 4
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-assert.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.