Other languages with automatic variable declaration - like Perl - have a strict mode.
By activating this strict mode, variable declaration is required, and Perl throws an error as soon as you try to use an undeclared variable.
Does PHP offer a similar feature?
Kind of. You can activate the E_NOTICE
level in your error reporting. (List of constants here.)
Every instance of usage of an undeclared variable will throw an E_NOTICE
.
The E_STRICT
error level will also throw those notices, as well as other hints on how to optimize your code.
error_reporting(E_STRICT);
Terminating the script
If you are really serious, and want your script to terminate instead of just outputting a notice when encountering an undeclared variable, you could build a custom error handler.
A working example that handles only E_NOTICE
s with "Undefined variable" in them and passes everything else on to the default PHP error handler:
<?php
error_reporting(E_STRICT);
function terminate_missing_variables($errno, $errstr, $errfile, $errline)
{
if (($errno == E_NOTICE) and (strstr($errstr, "Undefined variable")))
die ("$errstr in $errfile line $errline");
return false; // Let the PHP error handler handle all the rest
}
$old_error_handler = set_error_handler("terminate_missing_variables");
echo $test; // Will throw custom error
xxxx(); // Will throw standard PHP error
?>