Inhaltsverzeichnis
assert()-Assertionsfunktion
assert_options() und die entsprechende Parameterkonfiguration in php.ini
Heim Backend-Entwicklung PHP-Tutorial Eine kurze Diskussion über die Verwendung von Assertionsfunktionen in PHP

Eine kurze Diskussion über die Verwendung von Assertionsfunktionen in PHP

Jun 22, 2021 pm 06:43 PM
php

In diesem Artikel erfahren Sie, wie Sie Assertionsfunktionen in PHP verwenden. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Eine kurze Diskussion über die Verwendung von Assertionsfunktionen in PHP

Ich dachte ursprünglich, dass zusicherungsbezogene Funktionen von Unit-Test-Komponenten wie PHPUnit bereitgestellt werden. Nachdem ich das Handbuch gelesen hatte, entdeckte ich, dass die Assertionsfunktion „assertion()“ eine Funktion ist, die mit PHP selbst geliefert wird. Mit anderen Worten: Wenn wir einfache Tests im Code durchführen, müssen wir nicht die gesamte Komponententestkomponente vollständig einführen.

assert()-Assertionsfunktion

assert(1==1);

assert(1==2);
// assert.exception = 0 时,Warning: assert(): assert(1 == 2)
// assert.exception = 1 时,Fatal error: Uncaught AssertionError: 验证不通过
Nach dem Login kopieren

Offensichtlich kann der zweite Teil des Codes die Assertionsüberprüfung nicht bestehen. Zu diesem Zeitpunkt gibt PHP eine Warnung oder einen Ausnahmefehler zurück. Warum gibt es zwei mögliche Fehlerformen? Wenn wir „assertion.Exception“ in php.ini auf „off“ oder „0“ setzen, d. h. wenn wir die Funktion dieses Parameters deaktivieren, gibt das Programm immer noch eine Warnung in Form von PHP5 zurück, genau wie der Kommentar im obigen Code. Gleichzeitig können Ausnahmen nicht durch try...catch abgefangen werden. Dieser Parameter steuert tatsächlich, ob ein authentisches Ausnahmeobjekt ausgelöst wird. Wenn Sie diesen Parameter als Standard beibehalten, also auf „on“ oder „1“ setzen, wird direkt eine Ausnahme ausgelöst und das Programm beendet.

Wie aus dem obigen Code ersichtlich ist, ist der erste Parameter der Behauptung ein Ausdruck und erfordert einen Ausdruck, der ein Objekt vom Typ Bool zurückgibt. Was ist, wenn wir eine Zeichenfolge oder eine Zahl übergeben?

// 设置 assert.exception = 0 进行多条测试

assert(" ");
// Deprecated: assert(): Calling assert() with a string argument is deprecated
// Warning: assert(): Assertion " " failed

assert("1");
// Deprecated: assert(): Calling assert() with a string argument is deprecated

assert(0);
// Warning: assert(): assert(0) failed

assert(1);

assert("1==2");
// Deprecated: assert(): Calling assert() with a string argument is deprecated
// Warning: assert(): Assertion "1==2" failed
Nach dem Login kopieren

Natürlich unterliegt der Ausdruck des ersten Parameters einer Typumwandlung, aber der Zeichenfolgentyp weist eine veraltete Erinnerung auf, die darauf hinweist, dass der Ausdruckstyp des an die Funktion „asset()“ übergebenen Zeichenfolgentyps veraltet ist. Die aktuelle Testversion ist 7.3. In Zukunft können Fehler oder Ausnahmen, die den Vorgang abbrechen, direkt gemeldet werden. Das Hauptproblem besteht darin, dass, wenn die übergebene Zeichenfolge selbst auch ein Ausdruck ist, die Beurteilung auf dem Inhalt dieses Ausdrucks basiert, was wie beim letzten Codeabschnitt leicht zu Mehrdeutigkeiten führen kann. Natürlich wird die veraltete Verwendungsmethode immer noch nicht empfohlen. Hier handelt es sich lediglich um ein Verständnis.

Als nächstes werfen wir einen Blick auf die anderen Parameter der Funktion „asser()“. Der zweite Parameter ist von zwei Typen: entweder eine Zeichenfolge, die zum Definieren von Fehlerinformationen verwendet wird, oder eine Ausnahmeklasse, die zum Auslösen einer Ausnahme verwendet wird.

assert(1==1, "验证不通过");

assert(1==2, "验证不通过");
// Warning: assert(): 验证不通过 failed
Nach dem Login kopieren

Wenn eine Zeichenfolge direkt angegeben wird, wird der Inhalt der von uns definierten Fehlermeldung in der Warnmeldung angezeigt. Das ist sehr leicht zu verstehen.

// 注意 assert.exception 设置不同的区别

assert(1==1,  new Exception("验证不通过"));

assert(1==2,  new Exception("验证不通过"));
// assert.exception = 1 时,Fatal error: Uncaught Exception: 验证不通过
// assert.exception = 0 时,Warning: assert(): Exception: 验证不通过
Nach dem Login kopieren

Natürlich können wir auch eine Ausnahmeklasse angeben, damit die Behauptung eine Ausnahme auslöst. Standardmäßig wird durch das Auslösen dieser Ausnahme die Ausführung des Programms abgebrochen. Das ist ein normaler Ausnahmeprozess. Wir können try...catch verwenden, um Ausnahmen abzufangen.

try{
    assert(1==2,  new Exception("验证不通过"));
}catch(Exception $e){
    echo "验证失败!:", $e->getMessage(), PHP_EOL;
}
// 验证失败!:验证不通过
Nach dem Login kopieren

Es gibt einen weiteren Parameter, der die Gesamtoperation von Assertions beeinflusst, und das ist der Parameter zend.assertions in php.ini. Es enthält drei Werte:

  • 1, generiert und führt Code aus, wird im Allgemeinen in Testumgebungen verwendet
  • 0, generiert Code, wird ihn aber zur Laufzeit passieren
  • -1, generiert keinen Code, wird im Allgemeinen in formalen Umgebungen verwendet

Sie können diesen Parameter selbst konfigurieren und testen. Der Standardwert in php.ini ist 1, was bedeutet, dass die Funktion Assert() normal ausgeführt wird.

assert_options() und die entsprechende Parameterkonfiguration in php.ini

Die Assertionsfunktion in PHP stellt uns auch eine Assert_options()-Funktion zur Verfügung, mit der wir einige Parameter im Zusammenhang mit der Assertionskonfiguration bequem festlegen und abrufen können. Zu den Assertionsflags, die es setzen kann, gehören:

|. -:
  • assert.active | ASSERT_WARNING |. Assert.warning |. Generieren Sie eine PHP-Warnung für jede fehlgeschlagene Behauptung ASSERT_BAIL |. Assert.bail |. Ausführung bei Assertionsfehler abbrechen ASSERT_QUIET_EVAL |. Assert.quiet_eval |. Deaktivieren Sie error_reporting, wenn Assertionsausdrücke ausgewertet werden ASSERT_CALLBACK |. affirm.callback | (NULL) |. Rufen Sie die Callback-Funktion auf, wenn die Behauptung fehlschlägt. Die Bedeutung dieser Parameter ist sehr einfach zu verstehen. Sie können sie selbst testen. Werfen wir einen Blick auf die Funktion des letzten ASSERT_CALLBACK. Tatsächlich ist die Beschreibung auch sehr klar: Wenn die Behauptung fehlschlägt, wird die durch diese Option definierte Rückruffunktion eingegeben.
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 1);
assert_options(ASSERT_BAIL, 1);

assert_options(ASSERT_CALLBACK, function($params){
    echo "====faild====", PHP_EOL;
    var_dump($params);
    echo "====faild====", PHP_EOL;
});

assert(1!=1);
// ====faild====
// string(105) ".../source/一起学习PHP中断言函数的使用.php"
// ====faild====
Nach dem Login kopieren

Wenn die Behauptung fehlschlägt, geben wir die Rückruffunktion ein und die Rückruffunktion gibt einfach den Inhalt der an die Rückruffunktion übergebenen Parameter aus. Es ist ersichtlich, dass die in dieser Rückruffunktion übergebenen Dateiinformationen die Behauptung nicht übergeben können.

Zusammenfassung

Das Erlernen und Beherrschen der Verwendung und Konfiguration von Assertionsfunktionen kann den Grundstein für das Erlernen von PHPUnit-Unit-Tests in der Zukunft legen. Natürlich gibt es nicht viele Dinge mit dieser Fähigkeit, also denken Sie daran!
测试代码:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202005/source/%E4%B8%80%E8%B5%B7%E5%AD%A6%E4%B9%A0PHP%E4%B8%AD%E6%96%AD%E8%A8%80%E5%87%BD%E6%95%B0%E7%9A%84%E4%BD%BF%E7%94%A8.php
Nach dem Login kopieren
Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über die Verwendung von Assertionsfunktionen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles