PHP SCHOOL.biz

PHPの学習をする為のブログです。プログラム未経験の方にも理解できるよう基本的な、PHPの知識について身に付けることができるようにわかりやすい内容にしていきたいと思っています。


PHPでのファイルのインクルード

PHPでのファイルのインクルード

「インクルード」(include)とは直訳すると「含める、入れる」って意味にます。PHPにおいての「インクルード」は「他のファイルに記述した内容を取り込む」という意味になります。
include(またはrequire)文は、指定されたファイルに存在するすべてのテキスト/コード/マークアップ読み込み元のファイルに含め、include文をを使用したファイルで利用できるようにします。

PHPでのinclude文・require文

include文・require文を使用すると1つのPHPファイルの内容をincludeまたはrequire文を使って(サーバが実行する前に)別のPHPファイルに挿入し利用することが可能です。

includeとrequire文は、include文・require文の処理を失敗した場合を除いて同じです。

・requireは致命的なエラー(E_COMPILE_ERROR)を生成し、スクリプトを停止します。
・includeは警告(E_WARNING)のみを生成し、スクリプトは続行します。

include文とrequire文違いには次のような違いがあります。

ステートメント エラー時の処理の中断 読み込める回数
include 中断しない 複数回
require 中断する 1回

include文は外部ファイルの読み込みが失敗しても処理を続けます。includeの処理が失敗しても処理を実行したい場合は、include文を使用します。
require文は外部ファイルの読み込みが失敗すると処理を終えてしまいます。
概ね次のように使い分けると良いです。

include → ページのサイドコンテンツが書かれたテンプレートファイルなど
require → 正常な処理をするために必要な変数を定義したファイルなど

include文及びrequire文の文法

include 'filename';

or

require 'filename';

PHPでのincludeファイルの例

例1

"footer.php"と呼ばれるフッターファイルがあるとします。

<?php
echo "<p>Copyright &copy; 1999-" . date("Y") . " PHP SCHOOL.biz</p>";
?>

次の例のサンプルコードにフッタファイルをページに含めるには、include文を使用します。

<html>
<body>

<h1>Welcome to my home page!</h1>
<p>Some text.</p>
<p>Some more text.</p>
<?php include 'footer.php';?>

</body>
</html>

上記の例のファイルをinclude.phpという名前にして2つのファイルをサーバーにアップロードしてみましょう。

実行結果
footer.phpのファイルの内容は、include.phpの内容には含まれていない内容です。しかし、でfooter.phpの内容をinclude.phpの内容に含めているため、include.phpを表示するとfooter.phpの内容が表示されます。

例2

下記の内容のファイルをvars.phpで保存してみましょう。

<?php
$color='red';
$car='BMW';
?>

次に下記の内容のファイルをrequire.phpで保存しまし、二つのファイルをPHPの動くサーバーにアップロードします。

<html>
<body>

<h1>Welcome to my home page!</h1>
<?php require 'vars.php';
echo "I have a $color $car.";
?>

</body>
</html>

実行結果

上記の例を「I have a red BMW.」という文が表示されました。
include文でもrequire文でも別ファイルに記述した変数を引き継ぐことができます。

include文 VS require文

include文とrequireステートメントは、PHPコードにファイルを含めるためにも使用されます。
しかし、includeとrequireの間には説明したように大きな違いが1つあります。 include文にファイルが含まれていてPHPがそのファイルを見つけられなかった場合、スクリプトは引き続き実行されますが、require文はfatal errorで処理を止めてしまいます。
したの例を見てみましょう。

<html>
<body>

<h1>Welcome to my home page!</h1>
<?php include 'noFileExists.php';
echo "I have a $color $car.";
?>

</body>
</html>

実行結果
include文で存在しないファイルをincludeした場合には、warningなどのエラーは表示されますが処理は最後までされ、「I have a .」という文が表示されます。ちなみにサーバーの設定でwarningなどのエラーは表示しないようにすることができます。

次にrequire文を使用した場合は、どのようになるのでしょうか?

実行結果

require文を使用して同じ例を実行すると、require文が致命的なエラーを返した後にスクリプトの実行が終了するため、echo文は実行されません。

アプリケーションでファイルが必ず必要な場合は、requireを使用します。
ファイルが不要でも良い場合はincludeを使用し、その際ファイルが見つからない場合はアプリケーションを続行することができます。