1

ほとんどのPHPソースで終了タグの挿入が非推奨になっていることをご存知ですが、Lithiumのドキュメントに、終了PHPタグを含めることが推奨されているのはなぜですか?その合理的な理由はありますか?そのほかに、そのドキュメントには他の廃止されたスタイルがいくつかあります。リチウムは活発なプロジェクトですか?

更新: PHPのみを含むファイルでphpタグを開くことも冗長であるように思われ、現在それを行う必要があるため、これを含めます(phpコードのみを含むファイルの標準ファイル拡張子が残っている場合はタグを開く必要はありません)、しかし、もっと奇妙なのは、誰かが終了タグを含めるべきだとさえ言っていることです!

4

2 に答える 2

3

終了タグを省略するのは、ずさんです。

誰かがそれを行う唯一の言い訳は、誤って末尾の空白を残し、ヘッダーが時期尚早に送信される可能性があるということです。この正当化が完全に偽物である理由は次のとおりです。

  1. Xdebug がインストールされている場合 (インストールされていない場合は、より大きな問題が発生します)、ヘッダーを書き込もうとすると、出力が開始された場所が正確にわかります。
  2. この種の行動は、細部への注意が全体的に欠如していることを示していると思います。これを間違えた場合、コードに他にも問題がある可能性があります (または、エディターの設定が悪い/不十分です)。
  3. これは、優れた QA ツールによって完全に否定されます。包括的なコード品質バリデーターであるli3_qualityがあります。

本質的に、人々は最悪の形の怠惰でずさんさを正当化しています。

Lithium のコーディング標準を参照すると、対称性に高いレベルの注意が払われていることに気付くでしょう。コーディング標準のすべてが対称的です。開始/終了タグを含みます。私たちには優れた QA ツールがあるため、そうすることは決して問題ではありません。

于 2012-12-05T14:30:16.377 に答える
2

リチウムコーディング規格

質問で参照されているリンク...コーディング標準...は、Lithium開発者がプロ​​ジェクトに最適なコーディング標準であると信じているものです。個人的には、終了タグが望ましいことに同意します。

PHP ドキュメントでは、「純粋な」PHP コードである場合は終了タグを使用しないことが「望ましい」と述べていますが (ほとんどの場合、誤って空白などを追加しないようにするためです)、それを回避する簡単な方法は、最初の場所。私はタグを残すことを好むので...

  • コードはより均一に見えます
  • サーバーの互換性を確保するには
  • テキスト エディターでの色分けなどのサポートを強化するため

これは、Lithium の仕組みについての誤解でもあります... 与えられた例は、ControllersModelsなどとして機能するファイル用です。これらのファイルは、ほとんどの場合、ビューのようにエンド ユーザーの要求によって直接アクセスされることはありません(よくないため)もっと簡単に説明します。)

リチウムはアクティブなプロジェクトですか?

Lithium が「アクティブな」プロジェクトであるかどうかについては、彼らの ... を参照することをお勧めします。

この投稿の時点で、最後の dev ブランチのコミットは 10 時間前です。

リチウムの「短い」タグの使用...

記録として、Lithiumドキュメントの他の例では、いわゆる PHP の「短い」タグを使用してい<?= ... ?>ます。<?php ... ?>

上記の例では、短いタグ構文を使用してビュー変数の内容を出力していることに気付いたかもしれません。Lithium は短いタグに依存したり使用したりしないため、この構文は少し誤解を招く可能性があります。この出力動作は、見た目とは少し異なります。ビュー レイヤーがレンダリングされると、各テンプレートは、最終的な形式にコンパイルされる前にトークナイザーによって処理されます。このステップでは、次のようになります。

<?=$variable; ?>

次のようなものに翻訳されます。

<?php echo $h($variable); ?>

そこで$h()使用されている関数は、HTML をエスケープします。簡単に言うと、このメカニズムにより、動的に生成されたすべてのデータが HTML テンプレートに安全に配置されるようにする簡単な方法が提供されます。

ビューで構文を使用することを強くお勧めし<?= ...; ?>ます。これは、クロスサイト スクリプティング (および関連する) 攻撃手法に対してアプリケーションを強化するのに非常に役立つためです。

于 2012-12-05T06:27:54.917 に答える