2012-04-22 10 views
3

私は、それを必要としない、またはそれを必要とする理由があるかどうかを知りたがっていました。私はこの文につまずいた:それは上だ行が実行されることはありません場合条件文でrequire()とinclude()文の動作が異なっていますか?

include()とは異なり、require()は常にさえ 、対象のファイルを読み込みます。条件付きで にファイルを含める場合は、include()を使用してください。条件文は require()には影響しません。しかし、require()が発生する行が でない場合、対象ファイル内のコードはいずれも となります。

私がそれを解釈しているのは、実行を終了しない内部条件を含み、実際にはそれをサーバーに含めるのではなく、サーバーにはコストがかかりません。これが本当ならば、私はちょうど興味があります。私はマニュアルでそれを見ていないので、私は懐疑的です。

答えて

4

偽の文の中に含めると、解析されません。同じことが要求にも当てはまります。主な違いは、requireは実行されない場合でもファイルが存在するかどうかを確認することです。まあ、これは少なくとも私の経験でした。

したがって、どちらも実行されると一度だけ実行されますが、実行されているかどうかにかかわらず、ファイルが存在しない場合はrequireにエラーが表示されます。

+0

ああ、わかります。ありがとうございます。 – Andy

+0

@Andyおそらくアップフォートして答えを受け入れるべきです。 – ricochet1k

1

は、まさにそれが実現していますどのように、これはあなたに二つの違いが何であるかのアイデアを与える必要がありません。

function require($file) { 
    if (!is_readable($file)) { 
     die("can't read $file"); 
    } 
    include($file); 
} 

をあなたがそれを含めるようにPHPを伝えるファイル毎回読み込みます。 _onceの亜種はインクルードされているものを追跡し、インクルードを1回だけ行います。

関連する問題