PHP は埋め込み HTML をサポートしていますが、PHP ファイル内の PHP タグの外側の HTML は、
を直接出力する場合と何か違いますか?
PHP にはエラー抑制機能「@」が用意されています。どのような場合に使用すればよいですか?
これは、過去 2 日間に一部のネットユーザーから寄せられた一般的な質問です。今後の参考のために、今日は一般的に答えておきます。
PHP ファイルに埋め込まれた HTML を処理する方法
PHP では、構文解析中にタグの外側のすべての文字が T_INLINE_HTML トークンに変換され、すべての T_INLIE_HTML に ZEND_ECHO 出力が割り当てられます。
言い換えれば:
while($con) {-
?>-
ラルエンス-
}-
?>-
-
OPLINE が生成されます: T_ECHO、オペランドは "laruence";
結果に関して言えば、上記のコードは実際には次の結果と同じです:
while($con) {-
echo "ラルエンス";-
}-
?>-
-
ただし、注意すべき点が 1 つあります。次のような PHP タグの外側の文字は、字句解析プロセス中に 400 文字単位に分割されることです。
if(1) {
-
?>
-
ラルーエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンス ラルエンスラルエンス ラルエンス ラルエンス ラルエンス ラルエンス
-
}
-
?>
-
上記のコードでは、タグの外側に 531 文字 (スペースと復帰を含む) があり、2 つの T_INLINE_HTML 出力に分割されます。
-
エラーサプレッサー
PHP では、エラー サプレッサーを使用してエラー プロンプトを表示しないようにできることはわかっていますが、どのように行うのでしょうか?
文法分析の過程で、以下について:
@include('file');
?>-
-
include ステートメントの前後に 2 つの Opline (操作) が挿入されます。これら 2 つの操作は個別に実行されます。
1. 現在の error_reporting 値を保存し、error_reporting(0) を設定します。-
2. 以前に保存した error_reporting 値を復元します。
つまり、上記のコードは実際には次のコードに似ています:
$old = error_reporting(0);
include('file');
error_reporting($old);
-
さらに、余談になりますが、「エラー抑制はどのような場合に適用すべきですか?」ということですが、私の個人的な提案は、このステートメントが間違っていても、あなたにはほとんど影響がなく、エラーが何であるかを気にする必要はありません。この種のエラーを処理するための追加ロジックは用意されません。その場合は、エラー抑制を使用できます。それ以外の場合は、追加ロジックを使用してエラーを特定してください。-
-