PHP include文を用いた外部ファイルの読み込み
外部ファイルの読み込み
前回は外部ファイルの読み込みで require文について記載しました。
今回も外部ファイルの読み込みですが requireではなく、include文について記載したいと思います。
include文について
include文を使用しても require文のように外部ファイルを読み込むことができます。
require文との違いは、requireではもし読み込むファイルが存在しなかったらエラーでその場でPHPの処理全体が停止してしまいますが、
includeを使用すると、もしファイルが存在しなくても処理を続行することができます。
ただしファイルが存在しなかった場合は Warningを出力します。
include文の記述のしかた
include文は以下のように記述します。
include "読み込みたいファイル名";
もしくは
include ("読み込みたいファイル名");
読み込むファイルには require と同じように PHPファイル、HTMLファイル、テキストファイルなどを読み込むことができます。
テキストファイルは改行されないのでご注意ください。
includeのサンプル
外部ファイルを読み込むサンプルを記述します。
以下では inc01.php ファイルから inc02.php ファイルを読み込んでいます。
inc01.php
<?php include "inc02.php"; ?>
inc02.php
<?php echo "これは inc02.php に記述されたメッセージです。"; ?>
表示結果は以下のようになります。
HTMLファイルやテキストファイルも同じように読み込むことができます。
require文との違い
require文では読み込み用のファイルが存在しない場合はエラーになりそこで処理が終了してしまいます。
以下では require で存在しないファイル non.php ファイルを読み込む命令を記述しています。
<?php require "non.php"; echo "外部ファイル読み込み実行後のメッセージ"; ?>
結果は以下のようにエラーになりました。
では同じファイルを include を使用して読み込んでみます。
<?php include "non.php"; echo "外部ファイル読み込み実行後のメッセージ"; ?>
結果は以下のように失敗しても、その次の行の echo の処理が実行されました。
Warningメッセージの表示
includeではファイルが無かった場合にWarningメッセージを表示しています。
以下では先ほどの non.php がファイルが無かった場合のWarningメッセージを表示するようにしています。
<?php ini_set('display_errors', 1); include "non.php"; echo "外部ファイル読み込み実行後のメッセージ"; ?>
ループを使用した外部ファイルの読み込み
for文などと組み合わせればループ処理の中で読み込むファイルを変えることができます。
これは requireでも可能です。
inc04.php
<?php for($i = 1; $i <= 3; $i++){ include "read$i.php"; } ?>
read1.php
<?php echo "read1.php に記述されたメッセージ<br>"; ?>
read2.php
<?php echo "read2.php に記述されたメッセージ<br>"; ?>
read3.php
<?php echo "read3.php に記述されたメッセージ<br>"; ?>
include_once文
include_onceを使用すると、require_once のように1度読み込んだファイルは読み込まないようにすることができます。
include_once文は以下のように記述します。
include_once "読み込みたいファイル名";
もしくは
include_once ("読み込みたいファイル名");
include と include_once文の比較
以下では includeと include_once それぞれで同じファイルを複数回読み込んでいます。
読み込むファイル
read.php
<?php $i++; echo "read.phpを読み込んだ回数: $i<br>"; ?>
includeの場合
<?php include "read.php"; include "read.php"; include "read.php"; ?>
include_onceの場合
<?php include_once "read.php"; include_once "read.php"; include_once "read.php"; ?>
このように include_onceでは同じファイルは1度だけしか読み込みませんでした。