web codery

【PHP】include, requireの違いと使い分け

category: PHP

includeとrequireの違い

includeとrequireでは、読み込みファイルのパス指定を間違えた場合など、指定したファイルを読み込めなかった場合の挙動(エラーの種類)に違いがあります。指定したファイルを読み込んだ場合の挙動には違いがありません。
下記が読み込めなかったときの挙動です。

  • include ⇒ Warning(警告)を発して処理を続ける
  • require ⇒ Fatal Error(重大なエラー)を発してそこで処理を停止する

エラーについての補足ですが、Warningはそのエラーが起きた処理だけを中止してその後も処理を続行します。 Fatal Errorはそのエラーが起きる前までの処理が実行され、エラーが起きた時点でその後の処理を停止します。

使い分けの基準

使い分けの基準としては、処理を停止してエラーメッセージだけを表示する方が良いか、警告を発しつつ画面出力する(処理を続ける)方が良いかといったところになると思います。なので、下記のようなファイル分類での方法が考えられます。

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

例えば、最新のトピック一覧やカテゴリーナビゲーションなど、その部分が抜けてしまってもページ自体が表示されないよりは良い場合はinclude、条件分岐に使う変数を定義したファイルなど、誤って処理が続けられてしまうと何が起こるか分からないものはrequireといった使い分け方法です。

エラー表示をPHP内で設定する方法

公開しているページでエラーが起こった場合、エラーメッセージを表示したくない場合が多いと思います。includeに失敗して一部コンテンツが表示されていなくても、エラーメッセージが無ければ特に違和感がない場合もあるでしょう。そんな場合、エラーメッセージの表示設定をPHP内で変えることもできます。
全てのエラーを非表示するには下記をPHP内に指定します。

/* 0で非表示、1で表示する(デフォルト値) */
ini_set('display_errors', 0);

上の指定が実行されたところで設定が変わるので、すべての処理に適用したい場合は最初に処理される箇所に書いておく必要があります。

以上、include, requireの違いと使い分けでした。

管理人にメッセージを送る





ページトップ