Der Inhalt dieses Artikels ist eine detaillierte Einführung (Codebeispiel) zum Thema Assert und Eval. Ich hoffe, dass er für Sie hilfreich ist.
assert Bestimmt, ob ein Ausdruck wahr ist. Gibt true oder false zurück;
<?php $s = 123; assert("is_int($s)"); ?>
Aus diesem Beispiel können Sie ersehen, dass der String-Parameter ausgeführt wird, der eval() ähnelt.
Eval($code_str) führt jedoch nur $code_str aus, der der PHP-Codierungsspezifikation entspricht.
eval(): Diese Funktion ist nützlich, um Code für spätere Berechnungen in einem Datenbanktextfeld zu speichern. (Es wird auch empfohlen, less in der Produktion zu verwenden)
Hinweis: 1.eval() muss eine Zeichenfolge sein;
(1) Die eval( )-Funktion berechnet den String entsprechend dem PHP-Code (Berechnung = Ausführung).
(2)Die Zeichenfolge muss legaler PHP-Code sein und mit einem Semikolon enden.
(3) Wenn in der Codezeichenfolge keine Return-Anweisung aufgerufen wird, wird NULL zurückgegeben. Wenn im Code ein Parsing-Fehler vorliegt, gibt die Funktion eval() false zurück
Die Verwendung von Assertion ist etwas detaillierter. assert_option() kann verwendet werden, um Assert(); einige Einschränkungen und Kontrollen aufzuerlegen;Standardwert
ASSERT_ACTIVE=1 //Assert-Funktionsschalter
ASSERT_WARNING =1 // Wenn der Ausdruck falsch ist, ob eine Warnmeldung ausgegeben werden soll, eine PHP-Warnung für jede fehlgeschlagene Behauptung ausgeben
ASSERT_BAIL= 0 //Ob die Ausführung beendet werden soll; Ausführung bei fehlgeschlagenen Behauptungen beenden
ASSERT_QUIET_EVAL= 0 // Ob um Fehleraufforderungen beim Ausführen von Ausdrücken zu deaktivieren; error_reporting während der Auswertung von Assertionsausdrücken deaktivieren
ASSERT_CALLBACK= (NULL) // Ob die Rückruffunktion gestartet werden soll, Benutzerfunktion zum Aufrufen bei fehlgeschlagenen Assertionen
Die offizielle Dokumentation von PHP ist Es wird empfohlen, Assert zum Debuggen zu verwenden. Wir können feststellen, dass es auch einen Schalter ASSERT_ACTIVE gibt, mit dem gesteuert werden kann, ob das Debuggen aktiviert werden soll.
Da die Hauptfunktion von Assert das Debuggen ist, behalten Sie es nicht bei, wenn das Programm veröffentlicht wird. Es ist unklug, „asser“ zur Beurteilung von Ausdrücken in einem Programm zu verwenden. Der erste Grund ist, dass „asser“ in der Produktionsumgebung möglicherweise deaktiviert ist, sodass „asser“ nicht vollständig vertrauenswürdig ist ; und Wenn ASSERT_ACTIVE=1 in der Produktionsumgebung festgelegt ist, kann diese Ausdruckszeichenfolge ausgeführt werden, was wiederum Sicherheitsrisiken birgt.
Zum Beispiel
<?php function fo(){ $fp = fopen("c:/test.php",'w'); fwrite($fp,"123"); fclose($fp); return true; } assert("fo()"); ?>
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Assert und Eval in PHP (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!