-9

Specifically speaking, why does the below code work (outputs "test").

<?
    $variable = 'test';
?>

<?=$variable?>

Is this hacky, or functionality?

Jesse
  • 2,790
  • 1
  • 20
  • 36

1 Answers1

2

<?=?> is a Short Tag for echo(); According to PHP

Outputs all parameters.

echo is not actually a function (it is a language construct), so you are not required to use parentheses with it. echo (unlike some other language constructs) does not behave like a function, so it cannot always be used in the context of a function. Additionally, if you want to pass more than one parameter to echo, the parameters must not be enclosed within parentheses.

echo also has a shortcut syntax, where you can immediately follow the opening tag with an equals sign. Prior to PHP 5.4.0, this short syntax only works with the short_open_tag configuration setting enabled.

Gives you the also the next example:

I have <?=$foo?> foo.

Elias Nicolas
  • 775
  • 13
  • 26
  • Good deal. Learn new stuff every day. I am curious why a space between and = does not work Edit: Thanks for the edit Elias. Neat stuff – Jesse Sep 26 '15 at 04:03
  • Because, it echo everything after the `=` and if you put a space, it will try to echo, but since is not inside `'` or `"` concadenated to a string, it will fail. It this answer your question, accept this as "best answer"... – Elias Nicolas Sep 26 '15 at 04:10