Are they equal in safeness? I was informed that using
<?=$function_here?>
was less safe, and that it slows down page load times. I am strictly biased to using echo.
What are the advantages/disadvantages?
First of all, <?= is not a short open tag, but a shorthand echo, which is the same as <?php echo. And it cannot be disabled. So, it's safe to use in the meaning it is always enabled.
Speaking of safety in terms of security, the output must be always encoded according the the output medium rules.
For example, when echoing data inside HTML, it must be HTML-encoded:
<?= htmlspecialchars($function_here, ENT_QUOTES) ?>
Or, when echoing data inside JavaScript, it must be JavaScript-encoded:
<script>var=<?= json_encode($function_here) ?>
Or, when it's going to be both HTML and JS, then both encodings must be used:
<?php foreach($links as $label => $url): ?>
<br>
<form method="post">
<button class="my" onclick="<?=htmlspecialchars("window.open(".json_encode($url).")", ENT_QUOTES) ?>">
<?=htmlspecialchars($label, ENT_QUOTES) ?>
</button>
</form>
<?php endforeach ?>
Speaking of short open tags, there is only one, <?, and it's not always enabled (see the short_open_tag directive).
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.
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_tagsetting.
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".
Echo is generally just better to use because...
But, they are generally the same. See also:
<?= is so much nicer than <?php echoApart from the whole semi-religious debate on whether or not using short tags are a good idea and whether or not it should be considered deprecated, the original question was on how safe or unsafe they are to use.
Simply put, if you use short tags on a server that doesn't support them, parts of your PHP code may be exposed which can be considered a security vulnerability.
Just to add another source of PSR: http://www.php-fig.org/psr/psr-1/
PHP code MUST use the long tags or the short-echo tags; it MUST NOT use the other tag variations.
specifying:
<?php ?> and <?= ?>
You should use <?= and ask your system administrator/host to turn the short_open_tags on, it doesn't have any cons to be turned off, also it has no slowdown, the parser look for the <? the same way it look for <?php inside the index, binary search (perhaps <?PHP is slow due to lowering on parsing).
Also, already on PHP 5.5 <?= will be turned on by default and on long term <?= will be preferred while <?php echo semi deprecated.
If not sure yet.. A bit of googling helps a lot =D