requireとinclude
「requireとincludeって何が違うんだろう?」というのは割合と耳にするお話なので。
ものすごく端的には
・「ファイルを見つけられない場合に E_WARNING を発行する」のがinclude
・「ファイルを見つけられない場合に E_COMPILE_ERROR レベルの致命的なエラーを発行する」のがrequire
になります。
それ以外は同じですね。
またrequire_onceやinclude_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とで設定が異なりますが、興味がある人は調べてみるとよいでしょう。
この記事が気に入ったらサポートをしてみませんか?