私はこれに遭遇しましたPHPタグ<?= ?>
最近、私はそれを使用することに消極的ですが、それはあなたがそれを引き受けてほしかったので、とてもかゆいです。短いタグを使用することは悪い習慣であることを知っています<? ?>
および完全なタグを使用する必要があること<?php ?>
代わりに、これはどうですか:<?= ?>
?
それはいくつかのタイピングを節約し、コードを読みやすくするために優れています、IMO。したがって、これの代わりに:
<input name="someVar" value="<?php echo $someVar; ?>">
私はそれをこのように書くことができました、それはよりきれいです:
<input name="someVar" value="<?= $someVar ?>">
この演算子の使用は嫌われていますか?
誤報列車が駅の外に出る前に、PHP短いタグについて理解する必要のあることがたくさんあります。
PHPの短いタグの主な問題は、PHP別の構文で使用されていたタグ(<?
)を選択して管理したことです[〜# 〜] xml [〜#〜]。
このオプションが有効になっていると、構文エラーが発生せずにxml宣言をraw出力できませんでした。
<?xml version="1.0" encoding="UTF-8" ?>
これは、XMLの解析と管理の一般的な方法を考えると、大きな問題です。
<?=
はどうですか?<?
はxmlとの競合を引き起こしますが、<?=
はそうではありません。残念ながら、オンとオフを切り替えるオプションは short_open_tag
に関連付けられていました。つまり、短いエコータグ(<?=
)のメリットを得るには、短い開始タグ(<?
)の問題が原因です。短いオープンタグに関連する問題は、短いエコータグの利点よりもはるかに大きかったので、short_open_tag
をオフにするための100万回の推奨事項を見つけることができます。
PHP 5.4を使用すると、short_open_tag
オプションとは別に、短いエコータグが再度有効になりました。これは、<?=
の利便性を直接裏付けしていると思います。それ自体には根本的な問題は何もないので。
問題は、PHPバージョンのより広い範囲で機能する可能性のあるコードを記述しようとしている場合、<?=
があることを保証できないことです。
わかりました、それで今それはすべての方法です
<?=
を使用する必要がありますか?私の発塵PHP hat
冗長なecho
(単に個人的な好み)よりも<?= $someVar ?>
の使用をお勧めします。 onlyの欠点AFAIKは5.4.0より前のバージョンを実行しているユーザー向けです。この場合、short_open_tag
を php.ini 。
さて、あなたのプロジェクトがOSでないなら、それは議論の余地があります。もしそうなら、私はshort_open_tag
sを有効にする必要があるという事実を文書化するか、2つの解決策のうちより移植性の高いものを使用します。
<?
であろうと<?=
であろうと、短い形式のタグは避けてください。
主な技術的理由は移植性です。ショートフォームタグは無効にすることができるため、指定されたすべての設定で機能するかどうかは決してわかりません。short_open_tag
ディレクティブを参照してください。しかし、長い形式がどこでも機能することを常に確信できます。
それはいくつかのタイピングを節約し、コードを読みやすくするために優れています、IMO。
それも悪い習慣です。読みやすいとは言えませんが、コードを読みやすくすることで、キーストロークをいくつか節約するための言い訳に熱心に反対します。読みやすさが気になる場合は、テンプレートエンジンを使用してください。
<input name="someVar" value="{someVar}">
あなたの両方の例からはるかに読みやすいです。
最後に、短い形式のタグは、メジャーPHPプロジェクト、たとえば [〜#〜] pear [〜#〜] および Zend Framework 。
PHP-Documentation は、短いエコータグを安全に使用できることを明確に示しています。
5.4.0 The tag <?= is always available regardless of the short_open_tag ini setting.
これはPHPバージョン5.4以降用ですが、少なくともこれを使用する必要があります。テンプレート目的でのみ使用することをお勧めします。
短いタグを使用する理由:
短いタグを使用するnotの理由:
_<?=
_バージョンは、変数の最終出力のみに使用し、データの表示。
確かにどこでも<? echo($x); ?>
よりはるかに優れています。
長期的には、 Smarty などのテンプレートエンジンを検討することをお勧めします。
PHP 7.4以降、プレイフィールドは少し変化します。
<? ?>
は正式に廃止予定であり、PHP 8.0で削除される予定です。
PHP RFC:非推奨PHP短いオープンタグ は、明示的に<?= ?>
は影響を受けません。これは(RFCではなく、私によれば)その使用が推奨されていないことを示します。