1

私がそのようなコードを持っているなら

if($abc==true) {
   //code code code
} else {
   // other code, other code
}

では、「他のコード」はコンパイルされるのでしょうか$abctrue

それで、パフォーマンスに関して「コード」のパフォーマンスがたくさんある場合、これは無関係ですか?

4

4 に答える 4

6

PHPは、実行時に解析されます(したがって、「コンパイル」されます)。到達可能性に関係なく、すべてのコードが処理されます。例えば:

<?php
echo "Hello, World!";
exit;
DERP!!
?>

derpに到達できない場合でも、「Hello、World!」を出力するのではなく、解析エラーで失敗します。

于 2012-10-21T23:48:08.563 に答える
2

はい、コンパイルされます(実際に読み取られ、トークン化され、解析されます)。$abcPHPには、実行時にどのような値が想定されるかを知る方法がありません。

IF内でinclude()を使用することにより、負荷をいくらか減らすことができます(ただし、コードが本当に多い場合に限ります)。

 if (condition)
 {
     include('true.php');
 }
 else
 {
     include('false.php');
 }

ただし、この方法では、1つではなく2つのファイルをロードすることに注意してください。通常、余分なファイルのオーバーヘッドにより、ゲームは努力する価値がありません。

ただし、IFが実際に非常に多くのコードである場合は、それをいくつかのファイルに分割することは、保守的には良い考えかもしれません。プログラムフローからIFを削除するためのリファクタリングは、さらに優れています。

于 2012-10-21T23:51:23.020 に答える
1

どのようなパフォーマンスの問題が懸念されますか?PHPはインタプリタ言語です。つまり、ファイルはすべてのリクエストで解析、トークン化、実行されます。構文エラーが何であれ、ファイル全体を解析してトークン化する必要があります。実行される内容は、例のifのように、制御フローステートメントによって異なります。

余分な解析が心配な場合は、制御フローステートメントの結果に基づいてコードをリファクタリングして別のファイルを含めることができます。

$x = 1;
if($x === 1) {
    include_once './myFile.php';
}
else {
    // Something Else.
}

パフォーマンスに関連する大きな理由を、なぜそうしたいのかということについては、私は本当に考えることはできませんが。

于 2012-10-21T23:57:13.567 に答える
1

コード全体は実行時にエラーがないか「解析」されますが、コードのフローはその「if」ポイントで一方向にのみ進むため、基本的に速度パフォーマンスの問題はありません。

特に、「if」などのフロー制御ステートメントはおそらくプログラミングの最も重要な要素であるため、心配する価値はありません。本当に、それらなしではやっていけません。

于 2012-10-21T23:51:26.267 に答える