Re: short_open_tag

From: Date: Sat, 22 Mar 2008 23:13:20 +0000
Subject: Re: short_open_tag
References: 1 2 3 4 5 6 7 8 9 10  Groups: php.internals 
Request: Send a blank email to internals+get-36345@lists.php.net to get a copy of this message
Stefan Walk wrote: > Johannes Schlüter schrieb: >> Now we have the big issue: Do we want to have short open tags forever? >> Well, without tooo much thinking my idea would be to drop "<?" but keep >> "<?=", "<?=" shouldn't conflict with <?xml tags in the >> same file, but >> make it simple to do templating using PHP, on the other hand when not >> echo'ing stuff you already have to write more soo the four additional >> characters ("php ") don't matter that much - especially every decent >> editor/ide should be able to give you a completion on that, if you want. > > <ul> > <? foreach ($items as $item): ?> > <li><?=$item?></li> > <? endforeach ?> > </ul> > > you can have short stuff without outputting stuff too. I see many good reasons to disable short open tags. However, there is a compromise that is better from all vantage points: <ul> <?p foreach ($items as $item): ?> <li><?=$item ?></li> <?p endforeach ?> </ul> <?p is a valid PI and would prevent <?xml from being parsed as PHP. Also legal is <?: as PI's can start with or contain : or _. Honestly though, this is not so important to me, my primary concern is the conflict with <?xml. I mention it out of deference for those who actually do care about writing scripts that are xml-compliant for some strange reason :). Also possible and relatively simple to implement would be to allow an = at the start of an expression to alias to T_ECHO, so that <?p =$item ?> would work like <?=$item?>. This is, however, very perl-ish, so I mention it only as a possible way to preserve that aspect of short tags for template usage. God forbid we start seeing regular scripts using "=" to mean "echo" :). As a note, I use exclusively <?php in my templates and also use <?xml to generate xhtml, so I am very much against per-script enabling of short tag <? for the annoyance it would introduce of forcing an ini_set() at the top of each template and the bottom as well to be a good citizen and restore the old value. Greg

« previous php.internals (#36345) next »