Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When not to close a php file?

Tags:

php

I've come across a tutorial (reputable one if I may add) where the closing php tag ?> was omitted. This reminded me of a previous tutorial where the author said it's actually better not to close the tag, but didn't explain why. I'm a little surprised, I thought it was better practice to close the tag. Why is it better not to close it and is it all the time or in special cases only.

like image 835
Chris Avatar asked Nov 01 '09 09:11

Chris


2 Answers

Because any whitespace after the final closing tag can cause the script to fail silently, or cause unwanted output to be sent to the browser. Some frameworks such as Zend Framework have incorporated omitting the final closing tag as a recommended practice to application developers using the ZF to help avoid such situations, and as a requirement as per their coding standards:

For files that contain only PHP code, the closing tag ("?>") is never permitted. It is not required by PHP, and omitting it´ prevents the accidental injection of trailing white space into the response.

That said, omitting closing tags is very much a workaround for a problem for which the root cause has not yet been tackled. This blog post asserts the very same.

like image 103
karim79 Avatar answered Oct 11 '22 18:10

karim79


Well, if you have an include file like config.php and you do not want it to output any characters because it's not meant to or you don't want to trigger "headers already sent" you can leave the closing tag off to make sure no whitespace is sent to the browser. You will find that files that are pure PHP and do not contain any content to be outputted, will generally not include a closing tag.

The bottom line is you don't want to prematurly inject content before any headers are set. This is talked about in depth here.

like image 29
Sam152 Avatar answered Oct 11 '22 19:10

Sam152