Heim > Artikel > Backend-Entwicklung > Kleine PHP-Fehler, die leicht zu machen sind und deren entsprechende Analyse
Wenn wir Programme schreiben, machen selbst erfahrene Programmierer zwangsläufig Fehler. Wenn der Entwickler diese Fehler jedoch nicht bemerken und die Bedeutung der Compiler-Fehlermeldung nicht verstehen kann, sind diese Fehlermeldungen nicht nur nutzlos, sondern oft auch frustrierend.
Ein besseres Verständnis von Fehlermeldungen kann den Zeitaufwand für die Suche und Korrektur fehlerhafter Inhalte erheblich einsparen. Daher stellen wir in diesem Artikel die häufigsten Fehler vor, die beim Schreiben von PHP-Programmen gemacht werden, sowie verschiedene Arten von PHP-Fehlermeldungen und ihre Bedeutung. Darüber hinaus haben die in diesem Artikel beschriebenen Inhalte nichts mit der verwendeten PHP-Version zu tun. Weitere PHP-Lerninhalte finden Sie unter „Wie man Variablen in Programmen gute Namen gibt“, „24 nützliche PHP-Klassenbibliotheken“ und „Detaillierte Interpretation von PHP-Arrays“.
Um zu verstehen, warum der Compiler einen Fehler in einer bestimmten Zeile meldet, müssen Sie zunächst den Mechanismus verstehen, mit dem der Compiler PHP-Code analysiert.
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, der genau ist Dieser Teil der Anweisung führt häufig 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
Analysefehler treten jedes Mal nacheinander auf, wenn der vorherige Fehler ermittelt wird. Tritt immer wieder auf, PHP stoppt 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. Wenn im Ausdruck beispielsweise ein vordefiniertes Schlüsselwort verwendet wird, ist while = 10; while 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. Darüber hinaus werden geschweifte Klammern (}) nicht zum Beenden einer Funktion oder Schleife verwendet, zum Beispiel:
function UselessFunction() {
for($i < 0; $i < 10; $i++){
}
Der folgende Fehler wird generiert:
Analysefehler: Analysefehler, unerwartetes $ in c:program filesapache groupapachehtdocsereg2.php in Zeile 9
Da die Funktion UselessFunction nicht mit geschweiften Klammern endet ( }), PHP kompiliert. Der Compiler sucht weiterhin nach der schließenden Klammer, bis er das Ende der Datei erreicht. Da der Compiler keine passende geschweifte Klammer findet, meldet er einen Dateiendefehler.
Wenn die Hierarchie des Codes 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 nicht verarbeitet werden kann. mysql_fetch_array. Wenn die Syntax einer Abfrage ungültig ist oder die Verbindung zur Datenbank fehlschlägt, sollten Sie zum Testen die MySQL-Konsole aufrufen.
Weitere häufige Fehler
1. Achten Sie auf den Unterschied zwischen echo und print
Sowohl echo als auch print in PHP verfügen ü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 gewöhnliche Funktion verwendet werden. Wenn beispielsweise $r = print „Hello World“ ausgeführt wird, ist der Wert der Variablen $r 1. Darüber hinaus läuft die echo-Anweisung im Code etwas schneller als die print-Anweisung.
2. Achten Sie auf den Unterschied zwischen leeren Zeichenfolgen ('') und NULL.
In PHP werden leere Zeichenfolgen und NULL mit dem Wert 0 gespeichert, ihre Typen sind jedoch unterschiedlich Letzteres ist NULL. Es ist ersichtlich, dass die Werte für Zeichenfolge ('') und NULL gleich sind, aber von unterschiedlichem Typ sind.
3. Unterscheiden Sie den Unterschied zwischen == (gleich UND) und === (kongruent UND).
Beide sind Vergleichsoperatoren. == (gleich) vergleicht nur, ob Werte gleich sind, während = == (alle 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. while require() ) ist eine bedingungslos eingeschlossene Funktion. Wenn beispielsweise im folgenden Code die Variable $a wahr ist, wird die Datei a.php eingebunden: require() unterscheidet sich von include(). Unabhängig davon, welchen Wert $a annimmt, wird der folgende Code die Datei einschließen a.php: 🎜>}
Verwenden Sie im Hinblick auf die Fehlerbehandlung die Include-Anweisung. Wenn ein Include-Fehler auftritt, überspringt das Programm die Include-Anweisung. Die Ausführung wird jedoch fortgesetzt. Die require-Anweisung führt jedoch zu einem schwerwiegenden Fehler.
5. Achten Sie auf den Unterschied zwischen isset und empty.
empty bestimmt, ob eine Variable „leer“ ist, während isset bestimmt, ob eine Variable gesetzt wurde.
6. Unterscheiden Sie den Unterschied zwischen self :: und this--> Beim Zugriff auf Mitgliedsvariablen oder -methoden in einer PHP-Klasse, wenn die referenzierte Variable oder Methode als const (konstant) oder static deklariert ist (statisches Attribut), dann müssen Sie den Domänenoperator:: verwenden, und wenn die referenzierte Variable oder Methode nicht als const oder statisch deklariert ist, verwenden Sie den Zeigeroperator ->.