PHP アドバンス

PHP ファイルのインクルード(include / require)

1. PHP include および require ステートメントの概要

include および require ステートメントは、指定したファイル内に存在するすべてのテキスト、コード、またはマークアップを取得し、そのステートメントを記述したファイル内にそのまま挿入する機能を持ちます。

ファイルのインクルード(インポート)は、複数のウェブページで同じコードやテキストを再利用する場合に非常に便利です。

includerequire は、「失敗した際の挙動」を除いて、全く同一の動作をします。

  • include: 警告(E_WARNING)を生成しますが、スクリプトの実行は続行されます。
  • require: 致命的なエラー(E_ERROR)を生成し、スクリプトの実行は停止します。

もしインクルードするファイルが見つからなくても、そのまま処理を続行してユーザーにコンテンツを表示させたい場合は、include ステートメントを使用します。これは、ヘッダー、フッター、またはナビゲーションメニューなどの表示系ファイルに適しています。

一方で、設定ファイルやデータベース接続用ファイルなど、そのファイルがないとアプリケーションが正常に動作しない場合は、require ステートメントを使用するのが賢明です。

1.1 基本的なシンタックス

include 'filename';
// または
require 'filename';

2. 実践:フッターファイルの共通化

ファイルをインクルードすることで、開発の工数を大幅に削減できます。全ページ共通の標準的なヘッダー、フッター、またはメニューファイルを作成しておけば、将来ヘッダーを更新する必要が出た際も、その共通ファイル(インクルードファイル)1つを更新するだけで済みます。

例えば、以下のような内容の標準フッターファイル "footer.php" があると仮定します。

footer.php:

<?php
echo "<p>Copyright © 2020-" . date("Y") . " Volardev.com</p>";
?>

このフッターファイルをページ内で読み込むには、include ステートメントを使用します。

実装例:

<html>
<body>

<h1>私のホームページへようこそ!</h1>
<p>ここに何らかのテキストが入ります。</p>
<p>さらに別のテキストが入ります。</p>

<?php include 'footer.php';?>

</body>
</html>

3. 実践:ナビゲーションメニューの共通化

次に、標準的なメニューファイル "menu.php" があると仮定しましょう。

menu.php:

<?php
echo '<a href="/default.asp">ホーム</a> -
<a href="/html/default.asp">HTML チュートリアル</a> -
<a href="/css/default.asp">CSS チュートリアル</a> -
<a href="/js/default.asp">JavaScript チュートリアル</a> -
<a href="default.asp">PHP チュートリアル</a>';
?>

ウェブサイト内のすべてのページでこのメニューファイルを使用する場合、以下のように実装します(後で CSS でスタイリングしやすいように <div> 要素で囲んでいます)。

実装例:

<html>
<body>

<div class="menu">
<?php include 'menu.php';?>
</div>

<h1>私のホームページへようこそ!</h1>
<p>ここにテキストが入ります。</p>
<p>さらにテキストが入ります。</p>

</body>
</html>

4. インクルードファイル内での変数の利用

"vars.php" というファイルにいくつかの変数が定義されていると仮定します。

vars.php:

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

この "vars.php" をインクルードすると、呼び出し側のファイルでこれらの変数を使用できるようになります。

実装例:

<html>
<body>

<h1>私のホームページへようこそ!</h1>
<?php 
include 'vars.php';
echo "私は $color の $car を持っています。";
?>

</body>
</html>

5. include と require の詳細な違い

5.1 include の挙動

include ステートメントで指定したファイルが PHP によって見つからない場合でも、スクリプトは実行を継続します。

例:

<html>
<body>

<h1>私のホームページへようこそ!</h1>
<?php 
// 存在しないファイルを読み込む
include 'noFileExists.php';
echo "私は $color の $car を持っています。";
?>

</body>
</html>

この場合、警告は表示されますが、最後の echo ステートメントは実行されます。

5.2 require の挙動

require ステートメントで指定したファイルが見つからない場合、PHP は致命的なエラーを返し、スクリプトの実行はその時点で終了します。

例:

<html>
<body>

<h1>私のホームページへようこそ!</h1>
<?php 
// 存在しないファイルを読み込む
require 'noFileExists.php';
// ファイルが見つからないため、以下の処理は実行されません
echo "私は $color の $car を持っています。";
?>

</body>
</html>

require がエラーを返してスクリプトが停止(ダイ)するため、その後の echo は実行されません。

6. まとめ:どちらを使うべきか?

  • require を使うべきケース:そのファイルがアプリケーションの動作に 必須(Required) である場合。
  • include を使うべきケース:そのファイルがなくてもページの表示を継続でき、ユーザーに何らかの出力を提供したい場合。