Egal wie sorgfältig wir beim Schreiben von Programmen sind, Fehler sind unvermeidlich. Diese Fehler verwirren normalerweise den PHP-Compiler. Compiler-Fehlermeldungen sind nicht nur nutzlos, sondern oft auch frustrierend, wenn Entwickler nicht verstehen, was sie bedeuten.
Beim Kompilieren eines PHP-Skripts bemüht sich der PHP-Compiler, das erste Problem zu melden, auf das er stößt. Dadurch entsteht ein Problem: PHP kann den Fehler erst dann erkennen, wenn er auftritt (dieses Problem wird später in diesem Artikel ausführlich beschrieben). Aus diesem Grund weist der Compiler darauf hin, dass die fehlerhafte Zeile oberflächlich betrachtet möglicherweise syntaktisch korrekt erscheint oder es sich um eine Zeile handelt, die überhaupt nicht existiert!
Ein besseres Verständnis von Fehlermeldungen kann den Zeitaufwand für die Identifizierung und Korrektur von Fehlern erheblich reduzieren. Deshalb werde ich in diesem Artikel versuchen, die vielen verschiedenen Arten von PHP-Fehlermeldungen zu klären und zu erklären, wie man die Bedeutung verschiedener Fehlermeldungen während des Entwicklungsprozesses richtig versteht.
Der in diesem Artikel beschriebene Inhalt hat nichts mit der von Ihnen verwendeten PHP-Version zu tun, da die verschiedenen in diesem Artikel beschriebenen Fehler nicht auf bestimmte Fehler in einer bestimmten Version beschränkt sind. Darüber hinaus gehen wir davon aus, dass Sie ein Junior- oder Intermediate-Programmierer sind und sich seit einem halben oder einem Jahr mit dem Programmieren beschäftigen.
Funktionsweise des Compilers
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. Ich werde in diesem Artikel nicht näher darauf eingehen, aber wir werden einige einfache Konzepte besprechen, die eher zu Fehlern führen.
Variablendeklaration
Wenn Sie eine Variable in einer Anweisung deklarieren, lautet die spezifische Methode wie folgt:
$variable = 'value';
Der Compiler ermittelt zunächst den Wert der rechten Hälfte der Anweisung (d. h. alles auf der rechten Seite des Gleichen). Zeichen). In einigen Programmierbüchern wird dies als RHS (rechte Hälfte) der Anweisung dargestellt. Es ist dieser Teil der Aussage, der häufig Fehler verursacht. Wenn Sie eine falsche Syntax verwenden, erhalten Sie einen Parsing-Fehler.
Analysefehler
: Analysefehler, unerwartetes T_WHILE in c:\Programme\Apache-Gruppe\Apache\htdocs\script.php in Zeile 19.
Analysefehler treten nacheinander auf, jedes Mal, wenn der vorherige Fehler ermittelt wird. Erscheint weiterhin. Da PHP die Ausführung des Skripts nach dem ersten Parsing-Fehler stoppt, kann das Debuggen und Korrigieren dieser Fehlerserie oft besonders mühsam sein.
Außerdem enthalten Parsing-Fehler nur sehr wenige Informationen, und die Zeilennummer, in der der Fehler aufgetreten ist, wird fast nicht gemeldet. Der konkrete Grund besteht darin, dass der Compiler beim Auftreten eines Fehlers feststellt, dass die Syntax mehrerer Zeilen gültig aussehen sollte, bis er auf eine ungültige Syntax stößt. Der wahrscheinlichste Fall ist, dass im Ausdruck vordefinierte Wörter verwendet werden, z. B.
while = 10 ; / Bad ? while ist ein vordefiniertes Wort und kann keinem Wert zugewiesen werden.
Wenn PHP verwendet, um Ihren Code auszuwerten, können Sie diese vordefinierten Wörter nicht verwenden Dadurch wird PHP weitere Fehler melden, was Sie nicht ertragen können.
Zu diesem Problem kann Ihnen das folgende Beispiel weiterhelfen. Bitte konsultieren und lesen Sie den unten gezeigten PHP-Code:
<?php
$b = irgendein Wert
if($b == somevalue){
drucken Hallo Welt!;
}
?>
Der Fehler liegt in der Zeile $b = (fehlendes Semikolon am Ende der Anweisung), daher sollte es sich bei dem Fehler um einen Parsing-Fehler handeln: fehlendes Semikolon in Zeile 3, oder? Es sollte nicht anhand des Parsers bestimmt werden:
Analysefehler: Analysefehler, unerwartetes T_IF in c:\Programme\Apache
group\apache\htdocs\ereg2.php in Zeile 4
In Zeile 4 ist die Syntax der if()-Anweisung korrekt. Was verwirrt den Compiler? Der Hinweis ist der unerwartete T_IF-Teil. Wenn ein unerwarteter T_???-Fehler auftritt, bedeutet dies: Der Compiler hat festgestellt, dass ein vordefiniertes Wort an einer Position erscheint, an der es nicht erscheinen sollte. T_IF repräsentiert if(), T_WHILE repräsentiert while(), T_FOR repräsentiert for() usw.
Glücklicherweise ist die Ursache einiger Fehler auch einfach:
Die Anweisung wird nicht mit einem Semikolon (;) abgeschlossen, wie im obigen Beispiel. In der Zeichenfolge fehlen Anführungszeichen.
Einige andere häufige Fehler
Der häufigste Fehler, den ich sehe, ist, wenn eine Funktion oder eine Schleife nicht mit einer geschweiften Klammer (}) geschlossen wird. Dies ist wahrscheinlich der häufigste und nervigste Fehler.
Der spezifische Code lautet wie folgt:
function UselessFunction() {
for($i < 0; $i < 10; $i++){
}
Der folgende Fehler wird generiert:
Analysefehler: Analysefehler, unerwartetes $ in c:\Programme\Apache
group\apache\htdocs\ereg2.php in Zeile 9
Da die Funktion UselessFunction nicht mit einer geschweiften Klammer (}) endet, sucht der PHP-Compiler so lange 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 Codehierarchie korrekt wiedergegeben wird, werden Fehlermeldungen sehr deutlich. Wenn die hierarchische Struktur des Codes nicht markiert ist, ist es fast unmöglich herauszufinden, was am Ende vergessen wurde. Denken Sie also daran, die Hierarchie Ihres Codes anzugeben. Mit der Tab-Taste geht das ganz einfach. Außerdem wird es für nachfolgende Entwickler einfacher sein, das Code-Framework zu verstehen und zu modifizieren.
MySQL-Fehler
Eine weitere äußerst ärgerliche Fehlermeldung ist der häufigste MySQL-Fehler, der neuen PHP-Benutzern häufig Kopfschmerzen bereitet: Warnung: Das bereitgestellte Argument ist keine gültige MySQL-Ergebnisressource in ...
Die Zeile mit dem oben gemeldeten Fehler kann sein:
while ($row = mysql_fetch_array($result)) {
Der Parameter $result ist keine gültige Ressource. Auf Englisch bedeutet dies, dass mysql_fetch_array nicht verarbeitet werden kann, da die Abfrage fehlgeschlagen ist. Die Syntax einer der Abfragen ist ungültig (Sie sollten die Abfrage zum Testen kopieren und in die MySQL-Konsolenreferenz einfügen), oder die Verbindung zur Datenbank ist fehlgeschlagen (in diesem Fall sollten Sie den Benutzernamen, das Passwort usw. noch einmal überprüfen).
Fehler verhindern
Als ersten Schritt können kluge Programmierer die folgenden Schritte unternehmen, um die folgenden Fehler zu beseitigen:
· Denken Sie nicht daran, am Ende jeder Anweisung ein Semikolon hinzuzufügen – das sollte zur Gewohnheit werden.
· Geben Sie nach Möglichkeit immer die Hierarchie Ihres Codes an. So können Sie erkennen, ob Sie vergessen haben, an Stellen wie if-Aufrufen oder am Ende von Funktionen geschweifte Klammern einzufügen.
· Bitte verwenden Sie einen Editor mit Syntaxhervorhebung (z. B. HTML-Kit). Mithilfe eines solchen Editors können Sie feststellen, ob Sie vergessen haben, ein Zitat hinzuzufügen, ob Ihnen ein Semikolon fehlt usw.
Fazit
In diesem Artikel haben wir ein gewisses Verständnis für einige scheinbar bedeutungslose Fehler, die der PHP-Compiler melden kann. Wir müssen das Gelernte anwenden, um Fehler zu vermeiden und sie zu korrigieren, wenn sie auftreten. Das Debuggen ist einer der wichtigsten Teile der Arbeit eines Entwicklers. Durch die Verbesserung der Debugging-Effizienz kann der Fortschritt der gesamten Arbeit erheblich beschleunigt und die Zeit bis zum Abschluss eines Projekts verkürzt werden. Außerdem kann der durch Codefehler verursachte mentale Druck erheblich verringert werden.