Search code examples
phpvariablesdeclaration

Strict mode in PHP


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?


Solution

  • 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_NOTICEs 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
    
     ?>