Hacker News new | past | comments | ask | show | jobs | submit login

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 ....



<? is what is used by XML to indicate a processing instruction.

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.


Can 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.


Agreed... 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?


<?= always exists as of PHP 5.4, despite the short tags setting.


Awesome. 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.)


Yay


Personally, I'm a fan of exactly one way to do one thing.


Short 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.


It is not a unique escape code.

Everytime I type those three little characters, it gives me great pleasure.


<%= 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.


Can you give a demonstration of its non-uniqueness?


<? 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.


But, 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.


I 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.


'<?=' is invalid XML. '<?' must be followed by a valid XML Name.

See http://www.w3.org/TR/2008/REC-xml-20081126/#sec-pi




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: