Являются ли короткие теги PHP приемлемыми для использования? - PullRequest
513 голосов
/ 14 октября 2008

Вот информация согласно официальной документации :

Есть четыре разные пары открывающие и закрывающие теги, которые могут быть используется в PHP. Два из них, <?php ?> и <script language="php"> </script>, всегда доступны. Другие два короткие теги и теги стиля ASP, и может быть включен и выключен из Конфигурационный файл php.ini. В качестве таких, в то время как некоторые люди находят короткие метки и Теги в стиле ASP удобны, они менее портативный, и обычно нет рекомендуемое .

По моему опыту, на большинстве серверов do включены короткие теги. Typing

<?=

гораздо удобнее, чем набирать

<?php echo 

Удобство программистов является важным фактором, поэтому почему они не рекомендуются?

Ответы [ 26 ]

1 голос
/ 10 августа 2009
  • Короткие теги допустимы для использования в тех случаях, когда вы уверены, что сервер их поддержит и что ваши разработчики поймут это.
  • Многие серверы не поддерживают его, и многие разработчики поймут это, увидев его один раз.
  • Я использую полные теги для обеспечения переносимости, поскольку это действительно не так уж и плохо.

С учетом сказанного мой друг сказал это в поддержку альтернативных стандартизированных тегов в стиле asp, таких как <% вместо <?, что является настройкой в ​​php.ini и называется asp_tags , Вот его рассуждение:

... произвольные соглашения должны быть стандартизированы . То есть в любое время мы столкнулся с набором возможностей, которые все имеют одинаковую ценность - например, что странная пунктуация нашего программирования язык должен использовать для разграничения сам по себе - мы должны выбрать один стандарт путь и придерживаться его. Таким образом, мы уменьшить кривую обучения всех языки (или что-то Конвенция относится к).

Звучит хорошо для меня, но я не думаю, что кто-либо из нас сможет обвести повозки вокруг этой причины. А пока я бы придерживался полного <?php.

1 голос
/ 17 апреля 2018

Я подумал, что стоит упомянуть, что в PHP 7:

  • короткие ASP PHP-теги <% … %> пропали
  • Короткие вкладки PHP <? … ?> по-прежнему доступны, если для short_open_tag установлено значение true. Это значение по умолчанию.
  • Начиная с PHP 5.4, Short Печать теги <?=… ?> всегда включены, независимо от настройки short_open_tag.

Хорошее избавление от первого, поскольку оно мешает другим языкам.

Теперь нет никаких причин не использовать ярлыки для короткой печати, кроме личных предпочтений.

Конечно, если вы пишете код для совместимости с унаследованными версиями PHP 5, вам нужно будет придерживаться старых правил, но помните, что все, что до PHP 5.6, теперь не поддерживается.

См .: https://secure.php.net/manual/en/language.basic-syntax.phptags.php

0 голосов
/ 14 октября 2015

<?php ?> гораздо лучше использовать, так как разработчики этого языка программирования значительно обновили свой основной язык. Вы можете увидеть разницу между короткими и длинными тегами.

Короткие метки будут выделены светло-красным цветом, а более длинные выделены темнее!

Однако, что-то повторить, например: <?=$variable;?> нормально. Но предпочитаю более длинные метки. <?php echo $variable;?>

0 голосов
/ 16 октября 2008

Нет, и они выводятся из использования PHP 6 , поэтому, если вы цените долговечность кода, просто не используйте их или теги <% ... %>.

0 голосов
/ 20 марта 2019

Короткие метки всегда доступны в php. Так что вам не нужно повторять первое утверждение в вашем скрипте

пример:

    $a =10;
    <?= $a;//10 
    echo "Hellow";//
    echo "Hellow";

   ?>

Внезапно вам нужно использовать для одного сценария PHP, то вы можете используй это. Пример:

<html>
<head>
<title></title>
</head>  
<body>
<p>hellow everybody<?= hi;?></p>
<p>hellow everybody  </p> 
<p>hellow everybody  </p>   
</body>
</html>
0 голосов
/ 22 октября 2008

Если вам небезразлично XSS , тогда вам следует использовать <?= htmlspecialchars(…) ?> большую часть времени, поэтому короткий тег не имеет большого значения.

Даже если вы укоротите echo htmlspecialchars() до h(), это все еще проблема, которую вы должны помнить, чтобы добавлять ее почти каждый раз (и пытаться отследить, какие данные предварительно экранированы, которые не экранированы, но безвредны только делает ошибки более вероятными).

Я использую шаблонизатор , который по умолчанию защищен и пишет для меня теги <?php.

...