web-dev-qa-db-ja.com

PHP 5.4)の時点で、「エコー」の短いタグが永続的に有効になっているのはなぜですか?

PHP "短いタグ"(<? /*...*/ ?>)は「悪い」 であると私たちに告げるために使用された公式のドキュメントでさえです。ただし、 PHP 5.4以降、echoの種類<?= /*...*/ ?>short_open_tagの設定に関係なく)永続的に有効になります

何が変更されましたか?

共有ホスティングプラットフォームでshort_open_tagが有効になっているかどうかの予測不可能な性質のために以前は推奨されていなかったとしても、ホストの一部のサブセットが実行されているという理由だけでその引数がなくなることはありませんPHP 5.4?

間違いなく、この言語の変更は、本質的に「短いタグ」を避けるべきであるという推奨の変更を意味するものではありませんが、問題が発生した場合は、PHP =開発者はもはや彼らをそれほど「憎む」ことはありません。

現時点で私が導き出すことができる唯一の論理的な結論は、PHP 5.4。

それはなんですか?

PHP 5.4なので、短いオープンタグは常に有効になっているわけではありません。ドキュメントでは、短いエコータグ。これは別物です(短いオープンタグは<?スタイルのタグ、短いエコータグは<?=スタイルのタグ、エコーするためのものです)。

では、なぜデフォルトで有効になっているのですか?さて、スクリプトはたくさんありますが、<?= $somevar ?>の代わりに<?php echo $somevar ?>を使用すると便利です。そして 短いエコータグは短いオープンタグほど悪くないため、常に短いエコータグを有効にすることを選択しました 。現在、(フレームワークとCMS-esの)開発者はそれらに頼ることができます(または、PHP 5.4が主流になったとき)。

ただし、短いopenタグは、php.iniのshort_open_tag設定の影響を受けます。

43
kokx

短いエコータグ(<?=)のみが永続的に有効化され、短いオープンタグ(<?)は有効化されません。これは、HTMLテンプレート(またはその他のビューテンプレート)を作成するときに短いエコータグが非常に便利であり、それを使用しない場合は(<?php echo $var; ?>の代わりに<?= $var ?>のように)さらに多くを記述する必要があるためです。

4
lupatus

注: PHP 5.4、短いエコータグで始まる<?=は、short_open_tagの設定に関係なく、常に認識され、有効です。

つまり、<?=ではなく<?が常に有効であることです。

2
Glavić

その理由は、< ?はXMLドキュメントで使用され、short_open_tagsを有効にするとXMLコードでエラーが生成されます。だが、 < ?=、 と同じように < ?phpはXMLオープンタグではなく、安全に使用できます。

2
user2983350