Heim >Backend-Entwicklung >PHP-Tutorial >Bestandsaufnahme häufiger Fehler bei der PHP-Programmierung
Übersicht: Dieser Artikel zieht eine Bestandsaufnahme der kleinen Fehler und Irrtümer, die PHP-Entwickler beim Codieren gerne übersehen oder nicht beachten.
Variablendeklaration
Wenn Sie eine Variable in einer Anweisung wie folgt deklarieren: $var='value'; Der Compiler findet zuerst den Wert der rechten Hälfte der Anweisung Genau dieser Teil der Aussage führt oft zu Fehlern. Wenn Sie eine falsche Syntax verwenden, erhalten Sie einen Parsing-Fehler.
Analysefehler
Beispiel: Analysefehler: unerwartetes T_WHILE in c:program filesapache groupapachehtdocsscript.php in Zeile 19. Jedes Mal, wenn der vorherige Fehler ermittelt wird, treten die Analysefehler nacheinander auf Beim nächsten Mal stoppt PHP die Ausführung des Skripts nach dem ersten Parsing-Fehler. Außerdem enthalten Parsing-Fehler nur sehr wenige Informationen, und die Zeilennummer, in der der Fehler aufgetreten ist, wird fast nicht gemeldet. Beispielsweise wird im Ausdruck ein vordefiniertes Schlüsselwort verwendet, zum Beispiel: while=10; while ist ein vordefiniertes Schlüsselwort, dem kein Wert zugewiesen werden kann. Zu den vordefinierten Schlüsselwörtern gehören while, function usw. Wir können diese vordefinierten Schlüsselwörter nicht zum Benennen von Variablen verwenden, da der Compiler sonst einen Fehler meldet. Unter diesen repräsentiert T_IF if(), T_WHILE while(), T_FOR for() usw.
Häufige Fehler
Es gibt auch einige häufige Fehler, wie zum Beispiel, dass die Anweisung nicht mit einem Semikolon (;) endet, Anführungszeichen in der Zeichenfolge fehlen usw. Wenn Sie außerdem keine geschweiften Klammern (}) verwenden, um eine Funktion oder Schleife zu beenden, generiert beispielsweise die Funktion UselessFunction(){for($i<0;$i<10;$i++){} Folgendes error: Parse error:parse error,unexpected$in c:program filesapache groupapachehtdocsereg2.php on line 9Da die Funktion UselessFunction nicht mit einer geschweiften Klammer (}) endet, sucht der PHP-Compiler weiterhin nach der schließenden Klammer, bis er das Ende erreicht der Datei. Da der Compiler keine passende geschweifte Klammer findet, meldet er einen Dateiendefehler. Wenn die Codehierarchie korrekt wiedergegeben wird, werden Fehlermeldungen sehr deutlich. Andernfalls ist es sehr schwierig, den Code zu debuggen. Geben Sie daher unbedingt die hierarchische Struktur des Codes an, um späteren Entwicklern die Verbesserung des Codes zu erleichtern.
MySQL-Fehler
Eine andere Art von Fehlermeldung ist ein MySQL-Fehler, der PHP-Neulingen oft Kopfschmerzen bereitet, wie zum Beispiel: Warnung: Das angegebene Argument ist keine gültige MySQL-Ergebnisressource in. .Die oben gemeldete falsche Zeile lautet möglicherweise: while($row=mysql_fetch_array($result)){}Der Parameter $result ist keine gültige Ressource, da die Abfrage fehlschlägt und mysql_fetch_array nicht verarbeitet werden kann. Wenn die Syntax einer Abfrage ungültig ist oder die Verbindung zur Datenbank fehlschlägt, sollten Sie zum Testen die MySQL-Konsole aufrufen.
Achten Sie auf den Unterschied zwischen Echo und Print
In PHP verfügen sowohl Echo als auch Print über Ausgabefunktionen, es gibt jedoch immer noch subtile Unterschiede zwischen den beiden. Nach der Echo-Ausgabe gibt es keinen Rückgabewert, aber print hat einen Rückgabewert und gibt false zurück, wenn die Ausführung fehlschlägt. Daher kann es als normale Funktion verwendet werden, wenn beispielsweise $r=print „Hello World“ ausgeführt wird; der Wert der Variablen $r ist 1. Darüber hinaus läuft die echo-Anweisung im Code etwas schneller als die print-Anweisung.
Achten Sie auf den Unterschied zwischen leerer Zeichenfolge ('') und NULL
Leere Zeichenfolge und NULL werden in PHP beide mit dem Wert 0 gespeichert, ihre Typen sind jedoch unterschiedlich string , und letzterer ist NULL. Es ist ersichtlich, dass die Werte string ('') und NULL gleich sind, aber unterschiedliche Typen haben.
Unterscheiden Sie den Unterschied zwischen == (gleich) und === (alle gleich)
Beide sind Vergleichsoperatoren, == (gleich) vergleicht nur, ob die Werte gleich sind, während === (alle gleich) Gleich) vergleicht nicht nur, ob die Werte gleich sind, sondern auch, ob die Typen gleich sind, was strenger ist.
Unterscheiden Sie den Unterschied zwischen include und require()
Die Funktionen von include() und require() sind grundsätzlich gleich, es gibt jedoch einige Unterschiede in der Verwendung. include() ist eine bedingte Einschlussfunktion , während require () eine bedingungslose Inklusionsfunktion ist. Wenn beispielsweise im folgenden Code die Variable $a wahr ist, wird die Datei a.php eingebunden: if($a){include("a.php");} und require() unterscheidet sich von include( ), unabhängig von $ Was auch immer der Wert von a ist, der folgende Code schließt die Datei a.php ein: if($a){require("a.php");} Zur Fehlerbehandlung verwenden Sie die Include-Anweisung If Tritt ein Inklusionsfehler auf, überspringt das Programm die Include-Anweisung, obwohl eine Fehlermeldung angezeigt wird, wird das Programm weiterhin ausgeführt. Die require-Anweisung führt jedoch zu einem schwerwiegenden Fehler.
Beachten Sie den Unterschied zwischen isset und empty
Empty bestimmt, ob eine Variable „leer“ ist, während isset bestimmt, ob eine Variable gesetzt wurde.
Unterscheiden Sie den Unterschied zwischen self:: und this-->
Wenn beim Zugriff auf Mitgliedsvariablen oder -methoden in einer PHP-Klasse die referenzierte Variable oder Methode als const (Konstante) oder deklariert ist static (statisches Attribut), dann müssen Sie den Domänenoperator:: verwenden, und wenn die referenzierte Variable oder Methode nicht als const oder static deklariert ist, verwenden Sie den Zeigeroperator ->.