PHP: rfc:remove_alternative_php_tags

  • Date: 2014-09-09

  • Status: Accepted

  • Targeting: PHP 7

Proposal

This RFC proposes the removal of ASP tags (<%) and script tags (<script language=php>) as a means of entering or leaving PHP mode.

The following syntactical elements are removed:

  • <% opening tag

  • <%= opening tag with echo

  • %> closing tag

  • (<script\s+language\s*=\s*(php|"php"|'php')\s*>)i opening tag

  • (</script>)i closing tag

The listed opening tags will no longer enter PHP mode and the listed closing tags will no longer leave PHP mode.

Additionally the asp_tags ini directive is removed. Trying to enable asp_tags will result in a core error.

This RFC does not remove short opening tags (<?) or short opening tags with echo (<?=).

Reasoning

  • The alternative PHP tags have never gained any significant degree of usage. Their usage has been discouraged since forever.

  • The ASP tags depend on an ini directive and as such are non-portable. We generally try to move away from ini-dependent language behavior. With ASP tags removed, short open tags should be the last.

  • Supporting different tags allows very weird mixing like <script language=php> echo "foo" %>

To simplify porting of legacy code using the alternative tags, a porting script is provided. The script takes a directory and will replace ASP and script tags in all .php files contained in this directory:

php -d asp_tags=1 portAlternativeTags.php dir/

Vote

The vote started on 2014-09-24 and ended on 2014-10-01. The required 2/3 majority has been reached, as such this RFC is accepted.