Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why should I fix E_NOTICE errors?

Tags:

php

As a developer, I work with E_NOTICE turned on. Recently though, I was asked why E_NOTICE errors should be fixed. The only reason that I could come up with was that it is best practice to correct those problems.

Does anyone else have any reasons to justify the extra time/cost spent to correct these problems?

More specifically, why should a manager spend the money to have these fixed if the code already works?

like image 301
Ben Dauphinee Avatar asked Feb 22 '11 03:02

Ben Dauphinee


People also ask

What is e_ NOTICE in PHP?

The error reporting function allows you to filter which errors can be shown. The “~” character means “not” or “no” so the parameter ~E_NOTICE means not to show notices. Notice the “&” and “|” characters in between the possible parameters.

What is a PHP warning?

A warning error in PHP does not stop the script from running. It only warns you that there is a problem, one that is likely to cause bigger issues in the future. The most common causes of warning errors are: Calling on an external file that does not exist in the directory. Wrong parameters in a function.


1 Answers

SUMMARY

The PHP Runtime Configuration Docs give you some idea why:

Enabling E_NOTICE during development has some benefits.

For debugging purposes: NOTICE messages will warn you about possible bugs in your code. For example, use of unassigned values is warned. It is extremely useful to find typos and to save time for debugging.

NOTICE messages will warn you about bad style. For example, $arr[item] is better to be written as $arr['item'] since PHP tries to treat "item" as constant. If it is not a constant, PHP assumes it is a string index for the array.

Here's a more detailed explanation of each...


1. TO DETECT TYPOS

The main cause of E_NOTICE errors is typos.

Example - notice.php

<?php $username = 'joe';        // in real life this would be from $_SESSION  // and then much further down in the code...  if ($usernmae) {            // typo, $usernmae expands to null     echo "Logged in"; } else {     echo "Please log in..."; } ?> 

Output without E_NOTICE

Please log in... 

Wrong! You didn't mean that!

Output with E_NOTICE

Notice: Undefined variable: usernmae in /home/user/notice.php on line 3 Please log in... 

In PHP, a variable that doesn't exist will return null rather than causing an error, and that could cause code to behave differently than expected, so it's best to heed E_NOTICE warnings.


2. TO DETECT AMBIGUOUS ARRAY INDEXES

It also warns you about array indexes that might change on you, e.g.

Example - code looks like this today

<?php  $arr = array(); $arr['username'] = 'fred';  // then further down  echo $arr[username]; ?> 

Output without E_NOTICE

fred 

Example - tomorrow you include a library

<?php // tomorrow someone adds this include_once('somelib.php');  $arr = array(); $arr['username'] = 'fred';  // then further down  echo $arr[username]; ?> 

and the library does something like this:

<?php define("username", "Mary"); ?> 

New output

Empty, because now it expands to:

echo $arr["Mary"]; 

and there is no key Mary in $arr.

Output with E_NOTICE

If only the programmer had E_NOTICE on, PHP would have printed an error message:

Notice: Use of undefined constant username - assumed 'username' in /home/user/example2.php on line 8 fred 

3. THE BEST REASON

If you don't fix all the E_NOTICE errors that you think aren't errors, you will probably grow complacent, and start ignoring the messages, and then one day when a real error happens, you won't notice it.

like image 69
Mikel Avatar answered Sep 22 '22 03:09

Mikel