Re: Parse errors
| From: | Simon J Welsh | Date: | Sun, 18 Mar 2012 17:46:50 +0000 |
| Subject: | Re: Parse errors | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-317111@lists.php.net to get a copy of this message | ||
On 19/03/2012, at 6:32 AM, Tim Streater wrote:
> After recently omitting a semicolon from the end of a statement, and having the result be a
> JavaScript error in an odd place, I'm trying to pin down just what PHP does with such errors. I
> made a small test script to run at CLI, which does some echoes and then, after that, I miss out a
> semicolon. On the command line, all I get is the parse error message with line number.
>
> The script where I'd left the semicolon out of my production code is reached via AJAX, and
> sends some results back. It consists of a number of functions, then the main code appears, starting
> with two requires. The first such included file has some functions, puts out a header and does an
> echo, and calls set_error_handler. It's in the second included file that the semicolon is
> missed off (inside yet another function).
>
> I would have expected that the results sent back would just consist of the Parse error:
> message, but for some reason the echo done in the first included file shows up as well (this is
> important as it frames the parse error message for me).
>
> Is this the expected behaviour? The doc for set_error_handler says you can't use it to
> recover from E_PARSE and the like, and the function I supply to it doesn't appear to be called.
> I was just surprised that the initial echo statement's output made it back to the JavaScript
> side.
>
> (I obviously don't expect to have parse errors show up in production, but having them
> nicely visible and logged during testing is useful)
>
> --
> Cheers -- Tim
This is expected. The error doesn't occur to the second file is included, so everything in the
first included file is parsed and run before execution is halted.
---
Simon Welsh
Admin of http://simon.geek.nz/