requireとinclude

requireincludeって何が違うんだろう?」というのは割合と耳にするお話なので。
ものすごく端的には
・「ファイルを見つけられない場合に E_WARNING を発行する」のがinclude
・「ファイルを見つけられない場合に E_COMPILE_ERROR レベルの致命的なエラーを発行する」のがrequire
になります。

それ以外は同じですね。

またrequire_onceinclude_onceというものがありますが、これは「ファイルからのコー ドが既に読み込まれている場合は、再度読み込まれない」という点が違います。
細かくは「require/include と require_once/include_once では戻り値が違う」のですが、そこについては、基本的にはあまり気にしなくてよいと思われます。

実際に「どのようなシーンでどのように使うか」ですが。

プログラマが「class等の定義をしているファイルを読み込む」のであれば、require_onceが最適です。
理由は簡単で

・「ファイルがない」場合、どうせどこかで致命的なエラーになるので、ファイルを読み込むタイミングでとっととエラーになったほうがわかりやすいのでincludeよりrequireのほうが適切
・同じファイルを二度読み込むと「二重定義」になってしまうので、_onceがついている必要がある

から、です。

一方で。
デザイン系などで
・広告ファイルを読み込んでHTMLの所定の位置に表示する
ようなケースでinclude/requireを使うケースが、それなりに散見されるようです。
そういった場合は「include」が適しています。なぜなら

・「ファイルが無い」場合でも処理は続行させたい(ので、 @include(ファイル名) と書く事が多いです)
・「上下で広告」などがあるので、ファイルの二重読み込みをむしろ「したい」ので、_onceがついていないほうが都合がよい

ため、です。
要件によって使い分けができると、色々と便利なのではないか、と思います。

なお余談ですが。
「拡張子が.htmlでもPHPが動くようにする」のは、httpdの設定によりますが、可能です。
上述のような「基本はHTMLなんだけど、ちょこっとPHPの機能を使いたい」なんていう時に、便利かと思われます(まぁ拡張子が.phpでもいいような気がしますが、気にされるところは気にされるので)。
apacheとnginxとで設定が異なりますが、興味がある人は調べてみるとよいでしょう。

この記事が気に入ったらサポートをしてみませんか?