Home >Backend Development >PHP Tutorial >Correctly understand the meaning of PHP program error messages_PHP Tutorial
No matter how careful we are when writing programs, mistakes are inevitable. These errors usually confuse the PHP compiler. Compiler error messages are not only useless but often frustrating if developers don't understand what they mean.
When compiling a PHP script, the PHP compiler will do its best to report the first problem it encounters. This creates a problem: PHP can only recognize the error when it occurs (this problem is described in detail later in this article). It is for this reason that the compiler points out that the line in error may appear to be syntactically correct on the surface, or it may be a line that does not exist at all!
Better understanding of error messages can significantly save time spent identifying and correcting erroneous content. Therefore, in this article, I will try to clarify the many different types of PHP error messages and how to correctly understand the meaning of various error messages during the development process.
The content described in this article has nothing to do with the version of PHP you are using, because the various errors described in this article are not limited to specific errors in a particular version. In addition, we assume that you are a junior or intermediate programmer and have been engaged in programming for half a year or a year. How the compiler works
To understand why the compiler reports an error on a certain line, you must first understand the mechanism by which the compiler parses PHP code. I'm not going to go into detail about this in this article, but we will discuss some simple concepts that are more likely to lead to errors.
Variable declaration
If you declare a variable in a statement, the specific method is as follows:
$variable = 'value';
Compiler First find the value of the right half of the statement (that is, everything to the right of the equal sign). In some programming books, this is represented as the RHS (right half) of the statement. It is this part of the statement that often causes errors. If you use incorrect syntax, you will get a parsing error.
Parse error
Parse error: Parse error, unexpected T_WHILE in c:program filesapache groupapachehtdocsscrippt.php on line 19
Parse error every time the previous error is determined One after another keeps appearing. Because PHP stops executing the script after the first parsing error, debugging and correcting this series of errors can often be particularly tiresome.
Also, parsing errors have very little information, with almost no reporting of the line number where the error occurred. The specific reason is that when an error occurs, the compiler determines that the syntax of several lines should look valid until it encounters invalid syntax. The most likely case is that predefined words are used in the expression, such as;
while = 10; // Bad ? while is a predefined word and cannot be assigned to a value
Predefined words include while, function, etc., if PHP uses uses to evaluate your code. You cannot use these predefined words to name variables, and if you do, PHP will throw more errors than you can tolerate.
Regarding this issue, the following example may be helpful to you. Please read the PHP code shown below:
$b = "somevalue" if($b == "somevalue"){ print "Hello world!"; } ?>
Parse error: parse error, unexpected T_IF in c:program filesapachegroupapachehtdocsereg2.php on line 4 String 6
On line 4, if() The syntax of the statement is correct. So, what is confusing the compiler? The clue is the "unexpected T_IF" part. When an "unexpected T_???" error occurs, it means: the compiler found that a predefined word appears in a position where it should not appear. T_IF represents if(), T_WHILE represents while(), T_FOR represents for(), etc.
Thankfully, the cause of some errors is also simple:
statements are not terminated with a semicolon (;), such as the example above. Quotation marks are missing in the string.
Some other common mistakes
The most common mistake I have seen is when not using curly braces ( } ) to end a function or a loop, which is most likely The most common and annoying mistake. The specific code is as follows: