I've been giving some thought to the implication of my off the cuff addition of PHP_TAGS_NONE to the modes allowed and what should logically go with that. If tag style can be declared in a function, it should be possible set them in the configuration and at other places. Currently tag style is spread over multiple settings in the configuration - I know of two:
asp_tags short_open_tag This is problematic moving forward so I hereby suggest nipping further proliferation in the bud and go to one configuration setting with this name: tag_style It's values, and their corresponding meaning: Val Constant Effect 0 PHP_TAGS_LEGACY Honor older ini tag settings such as asp_tags or short_open_tag, in all ways behave in a a manner compliant with the expectations of any scripts that are upgrading. 1 PHP_TAGS_NONE No tags will be permitted in the file. Interpreter expects the whole file to be PHP. 2 PHP_TAGS_STANDARD Enable the classic <?php ?> tags we all know and love. 3 PHP_TAGS_SHORT Use PHP short tags <? ?> and <?= ?>. Unlike Legacy behavior with short_open_tag set to 'on' this setting will NOT let you use <?php ?> alongside the <? ?> and <?= ?> tags. 4 PHP_TAGS_SCRIPT Script tags <script type="php"></script> 5 PHP_TAGS_ASP ASP style tags <% %> And so a script could have an .htaccess file with php_flag php_tags 1 So the first file the webserver reads in doesn't have to have any opening tag at all. This would put a stop to the puzzlement of "Why am I getting an error when I call header()" which I see on programming boards at least once a week. The constants above can in turn be coupled to my original recommendation that include, include_once, require, and require_once each be allowed to have a second parameter. The default value of the second parmeter is whatever php_tags is set to at the time the include statement is parsed. Hence, unlike the current situation with short_open_tag and asp_tag, php_tags can be changed at runtime using ini_set. The only catch is the change only affects includes which occur after the setting change. I believe strongly that this improved recommendation improves the interoperability of tag styles without creating backwards compatibility issues or creating future problems. As for the secondary suggestion I made, allowing namespaces to be specified in the include statement, I'll drop that from this recommendation to focus on the changes to tag style setting.