2012-03-05 3 views
2

Человек, я мог бы поклясться, что видел его где-то, полезный синтаксис для сокращения конструкции <?php echo $var ?>, и я думаю, что это было <?=$var?>, но это не работает. Я искал около получаса сейчас, но не могу найти сайт снова, который рассказал мне об этом, и я не могу понять правильный синтаксис.

Я галлюцинируюсь или есть действительно синтаксис, подобный этому?

<div style="background-color:<?=$backgroundColorFromPhp?>"> 
    Hello <?=$name?>! 
</div> 
+7

http://www.php.net/manual/en/ini.core.php#ini.short-open-tag и HTTP: //www.php.net/manual/en/ini.core.php#ini.asp-tags – Tomalak

+0

Комментарий Томалака - правильный ответ! –

+0

@Tomalak Я беспокоюсь о своих навыках игры в googling ..:/Не могли бы вы дать ответ? Thx –

ответ

6

PHP имеет short_open_tag директиву в php.ini, которая позволяет этот синтаксис:

<? PHP code here; ?> 

в отличие от <?php PHP code here; ?>.

Это также позволяет

<?= variable ?> 

как сокращение для <? echo variable; ?>. Документы отмечают, что с PHP 5.4.0 <?= будет включен независимо от настройки short_open_tag.

Очень похожее asp_tags. Это позволяет классический синтаксис ASP-стиля:

<% PHP code here; %> 
<%= variable %> 

который где эхо-сокращенная синтаксис первоначально пришел. Примечание стороны: В классическом ASP <%= ... заменит довольно подробный вид:

<% Response.Write variable %> 
+0

имеет PHP скопированный ASP-эхо-сокращенный синтаксис? – dynamic

+0

@ yes123 Я всегда считал, что так оно и происходит. Я признаю, что не уверен. – Tomalak

2

Когда short_open_tag включена,

<?= $backgroundColorFromPhp ?> 

ярлык для

<?php echo $backgroundColorFromPhp; ?> 

однако, если short_open_tag отключен,

<?= $backgroundColorFromPhp ?> 
также будут отключены

(до к PHP 5.4).

0

То, что вы пытаетесь сделать, должно быть сделано следующим образом

 <div style="background-color:<?=$backgroundColorFromPHP ?>"> 
      Hello <?=$name ?>! 
    </div> 

Короче говоря, оставьте пробел после до последнего ? знака

И, пожалуйста, строго избежать вторя ваши HTML содержимое. Это просто плохой стиль. Всегда держите динамику своего php-кода отдельно от элементов html.

+1

Это не обязательно в любой реализации, с которой я столкнулся. – rockerest

+2

Единственное отличие здесь в том, что закрывающие теги '?>' Разделены пробелом из имени переменной? Это не решает, 'short_open_tags' является решением. :) И что лишние пробелы не делают никакого различия на самом деле. –

1

Да, это правильно, учитывая некоторые оговорки.

Во-первых, вы должны иметь short tags on. По моему опыту, это стандартная конфигурация, как указано в приведенной выше документации;

Во-вторых, вам нужен файл для анализа PHP. Если файл является файлом .html, он не будет анализироваться автоматически с помощью php-движка. Вам нужно будет каким-то образом запустить его или указать php для чтения файлов .html по умолчанию.

Наконец, мне нравится бросать то, что end statement с точкой с запятой (это делает <?=$name;?>), но я считаю, что это предпочтительный вариант.

+0

Самый пояснительный ответ, спасибо. :) Не поймите, почему это не было включено, изменение php.ini не сработало, но установив значение из WAMP. * Редактировать *: Томалек был первым со своим комментарием, извините. ;) –

+0

@NiklasR Прекрасно справедлив, рад помочь! – rockerest

1

действительно есть синтаксис, подобный этому на php, и он будет работать только тогда, когда вы настроите свой сервер на то, чтобы он работал, это называется сокращением, но этот метод сильно обескуражен, потому что есть некоторые серверы, на которых это отключено, и может предоставить некоторые Неопознанные ошибки при ошибочном использовании. Кажется, я впервые увидел, что это используется в wordpress. ;)

+0

' Gordon

+0

спасибо за информацию @ Gordon не думал, что они включили его в последнюю версию, в конце концов я действительно думаю, что большинство людей должны действительно обновлять свои серверы до этого нового версия. ;) –

Смежные вопросы