PHPでプログラミングをしているとき、1つのPHPファイルで1つの処理をするわけではありません。
MVCモデルが基本ですし、Cの中から別のCの部品になるPHPを実行したりもします。
そうしたほうが同じ処理をいくつも書かずに使いまわしてプログラミングの作業を効率化できます。
ただこの外部のPHPファイルを読み込む方法が4つあります。
- require
- require_once
- include
- include_once
これらの違いはなんでしょうか?
requireとinclude
requireとincludeの違いは、Fatalエラーになるかならないかです。
PHPはコンセプトなのかエラーが発生してもあまり途中で処理が止まらないです。
Javaとかならちょっとミスっただけでもう次の処理はしません。
エラー時に途中で処理が止まらないことが良い事か悪い事かは置いといて、PHPにも処理が続行できないエラーもあります。
それがFatalエラーです。
requireやrequire_onceを使った場合、読み込むファイルが存在しなければFatalエラーになり、それ以降の処理はされません。
includeやinclude_onceはFatalエラーにならずに、以降は続行されます。
_onceありなし
_onceのありなしの違いは、何度も読み込めるかどうかです。
_onceのありは1度しか読み込めません。
例えば以下のようなPHPがあったとします。
ファイル名はaiueo.phpとしましょう。
1 2 |
<?php echo "あいうえお<br />"; |
そしてaiueo.phpをrequireで読み込みます。
1 2 3 4 |
<?php require("aiueo.php"); require("aiueo.php"); require("aiueo.php"); |
実行結果は次のようになります。
1 2 3 |
あいうえお あいうえお あいうえお |
何度も「あいうえお」が出力されています。
ではrequire_onceを使ったらどうでしょう?
1 2 3 4 |
<?php require_once("aiueo.php"); require_once("aiueo.php"); require_once("aiueo.php"); |
実行結果は次のようになります。
1 |
あいうえお |
1度しか実行されていないことが分かります。
requireで実験しましたが、includeでも同じです。
まとめ
外部のPHPファイルを読み込む方法は、次の4つがあります。
- require
- require_once
- include
- include_once
まあでもぶっちゃけ、読み込むファイルが無い状態とか普通作らないですし、何度も読み込むような作りもナンセンスだと思います。
なのでどれ使っても同じだと思います。
まあでもバグったとき後続の処理で変な風にDBを更新されたりしても嫌なので、require_onceが一番無難かもしれないです。
コメントを残す