PHP echo vs PHP short echo tags
Solution 1:
<?
and <?=
are called short open tags, and are not always enabled (see the short_open_tag
directive) with PHP 5.3 or below (but since PHP 5.4.0, <?=
is always available).
Actually, in the php.ini-production file provided with PHP 5.3.0, they are disabled by default:
$ grep 'short_open' php.ini-production
; short_open_tag
short_open_tag = Off
So, using them in an application you want to distribute might not be a good idea: your application will not work if they are not enabled.
<?php
, on the other side, cannot be disabled -- so, it's safest to use this one, even if it is longer to write.
Except the fact that short open tags are not necessarily enabled, I don't think there is much of a difference.
Solution 2:
Echo is generally just better to use because...
- It supports good programming style.
- It can't be turned off in php.ini (short tags can be)
Short tags will be removed in PHP 6)
But, they are generally the same. See also:
- Are PHP short tags acceptable to use?
- How are echo and print different in PHP?
Solution 3:
http://php.net/manual/en/language.basic-syntax.phpmode.php states:
Starting with PHP 5.4, short echo tag is always recognized and valid, regardless of the
short_open_tag
setting.
short_open_tag
Off or On doesn't matter anymore.
So now you can, without concern, put tags like this in your templates:
<?= (($test) ? "val1" : "val2") ?>
It is official now, the "short echo tag" is something very different than the "short tag".