6 ms·
Boo, deleted short tags. Why do people hate short tags again? I can't remember because <? is not valid XML so there shouldn't be any problems with mixing php
by hackernewz 15y ago
Boo, deleted short tags. Why do people hate short tags again? I can't remember because <? is not valid XML so there shouldn't be any problems with mixing php and xml... hmm... I wonder ....
- chopsueyar 15y agoIt is not a unique escape code. Everytime I type those three little characters, it gives me great pleasure.
- hackernewz 15y agoCan you give a demonstration of its non-uniqueness?
- duskwuff 15y ago<? is used in XML headers. OTOH, you shouldn't ever be generating XML headers from PHP anyway (XHTML is a dead-end, and raw XML should be generated by an XML library), so this shouldn't be that big of an issue.
- hackernewz 15y agoBut, less than question mark and a space are not a valid XML combination. XML processing instructions cannot begin with a space. Likewise, PHP cannot run commands into the short tags, like <?echo $foo; ?>. So, there really is no collision, it's just grandstanding.
- mgkimsal 15y agoI wonder if the XML PI spec says anything about <?= Can you have a PI start with = ? If not, the echo short tag should stay for certain.
- zeen 15y ago'<?=' is invalid XML. '<?' must be followed by a valid XML Name. See http://www.w3.org/TR/2008/REC-xml-20081126/#sec-pi http://www.w3.org/TR/2008/REC-xml-20081126/#sec-pi
- mgkimsal 15y ago<%= is a unique escape code It always bugged me that the PHP community didn't pick up on this and run with it. We've had ASP tags since the beginning (almost?) but I think people avoid it out of some anti-MS stance. Rails runs with <%= just fine.
- mgkimsal 15y ago<? is what is used by XML to indicate a processing instruction. http://www.javacommerce.com/displaypage.jsp?name=pi.sql&id=18238 http://www.javacommerce.com/displaypage.jsp?name=pi.sql&... <?name pidata?> So when someone uses <?php in their XML document and tries to run it through PHP, will the collective PHP-internals community explode? React? Ignore it? <%= has been the compatible way forward since 1996 or so, and the community has chosen to ignore it. We've successfully migrated away from HTTP_GET_VARS, register_globals, and other bad habits. But somehow <?php is lorded over others as 'the one true way', as if somehow typing more boilerplate to avoid conflict with 0.02% of the use cases where there's a problem is something to be proud of.
- dexen 15y agoCan we please give up this ``is-valid-XML'' argument already? Quick counter-example: <?php echo 'foo ?>' ?> Guess what: - if interpreted as XML, the processing instruction ends at the first ?> - if interpreted as PHP, the PHP code ends at the sencond ?> ...which makes the argument against short tags -- XML validity -- moot. Can't be fixed without breaking backward compatibility either. Let's drop the argument now; otherwise somebody well-meaning will try to apply it and will end up breaking backward-compatibility (and removing a neat feature) yet keeping XML-compatibility broken anyway. Just like Robert Eisele did.
- acabal 15y agoAgreed... I've never used <? in a non-PHP context and it's way easier to type than <?php all the time. Why not just leave it in, or at least change it to something just as short but unique?
- philolson 15y ago<?= always exists as of PHP 5.4, despite the short tags setting.
- mgkimsal 15y agoYay
- romaniv 15y agoAwesome. I remember arguing for it on the mailing lists and I'm extremely happy they did this. With echo tag you can have a very simple and powerful templating system written in the language itself. (I usually just use two methods, Temaplte::show and Template::get, which both are less than 20 lines long.)
- encoderer 15y agoPersonally, I'm a fan of exactly one way to do one thing.
- z92 15y agoShort tags are why I don't need a template engine for PHP. And can write <?=$name?> instead of <?php echo $name;?>. This had been a unique feature that no other scripting language offers. This is a historic sign indicating that PHP was designed for the web.