phpで外部ファイルを読み込む方法
1.require(りくわいあー)
phpで外部ファイルを読み込むやり方はいくつかあるがそのうちの一つがこれ、『require』。単語単体の意味としては「必要とする」「要求する」などがあるが、正直外部ファイルを読み込みたい!という要望からすると今一つピンとこない。それなら後述する『include』の方がスッと入ってくるというもの。
そんな想いもあって私はこの『require』を当サイトでは使っていない。
読み込み対象のファイルがない場合は「Warning: require(hoge.php) [function.require]: failed to open stream: No such file or directory in ~~ on line 33」というようなメッセージが出る。。。
『require』と『include』の違いは後述。
require("hoge.php"); require("/hoge1/hoge2/hoge.php");
2.require_once(りくわいあーわんす)
先述の『require』は一つの外部ファイルを何度でも読み込むことができるが、こちらの『require_once』は一度きり。一度しか読み込めない。同一ファイルで2回目だったら読み込まない。『include_once』というものも存在するが、これも両者の違いは後述。
require_once("hoge.php"); require_once("/hoge1/hoge2/hoge.php");
3.include(いんくるーど)
先述した『require』の他に存在する外部ファイルの読み込み方法がこの『inculde』。単語単体としての意味は「含める」であり、『require』よりも直感的だな!というのが個人的な見解。実際の使用時は以下ソース例のように『$_SERVER['DOCUMENT_ROOT']』を付けてやらないと正しくパスを指定できない。これの理由がよくわかってないけど、まぁ動いてくれるからヨシとしてる。
/* パスを指定しない場合 */ <?php include("hoge.php"); ?> /* パスを指定する場合 */ /* ルートパスを取得 */ $webroot = $_SERVER['DOCUMENT_ROOT']; <?php include($webroot."/hoge1/hoge2/hoge.php"); ?>
4.include_once(いんくるーどわんす)
同一のファイルに対し、一度だけ『include』したい場合に使用するのが、これ『include_once』。これを使うと2回目以降は無視される。基本的には『require_once』と同様/* パスを指定しない場合 */ <?php include_once("hoge.php"); ?> /* パスを指定する場合 */ /* ルートパスを取得 */ $webroot = $_SERVER['DOCUMENT_ROOT']; <?php include_once($webroot."/hoge1/hoge2/hoge.php"); ?>
5.includeとrequireの違い
読み込みに失敗した場合、『include』と『require』いずれもWarningやErrorを出すが、出した後の挙動が異なる。『require』はエラー発生時、その後の読み込みを行わない。Errorを最後に読み込みが止まる。
『include』はエラー発生時もその後の読み込みを行う。最後まで表示される。
「どっちがいいの?」という人もいるだろうが、私はinclude推し。以下の2つの点から。
・『require』より意味が直感的
・複数個所の動作確認をしたい場合、最後まで読み込んでくるのでわずかに工数削減になる。