2019-06-11
ファイル読み込み関数includeとrequireの違い
includeとrequireは、設定ファイルやライブラリファイルなどを読み込む際に使用する関数です。
どちらもファイル読み込みの際に使用しますが、挙動の違いやシーンによる使い分けをみてみましょう。
includeとrequireの違い
どちらも構文は同じで、読み込むファイル名を絶対パスまたは相対パスで指定します。
includeとrequireの大きな違いは、エラーが発生した際に処理を停止するか続行するかという点にあります。
エラー発生時、includeはWarning(警告)を出力し、requireではFatal error(致命的エラー)を出力し、その後の処理は行われません。
<?php
include("include.php"); //エラーの際処理を続行
require("require.php"); //エラーの際処理を停止
include
<?php
include("include.php"); //読み込みファイルが存在しないためエラーが発生
echo "エラーが発生しました"; //処理が中断されないため出力される
require
<?php
require("require.php"); //読み込みファイルが存在しないためエラーが発生
echo "エラーが発生しました"; //処理が中断されるため出力されない
includeとrequireどちらを使うべきか
どちらが良いかは、実装を行うシーンによって異なると思います。
ユーザ認証やインターフェイスの表示処理
画面表示処理や計算処理を行う場合、エラーが発生し処理が中断してしまうと、画面が表示されず操作ができなくなってしまいます。そういったことを避けるためにもincludeを使用する方が望ましいでしょう。
バッチ処理
エラーにかかる処理が後の処理に影響する場合は処理を中断した方が望ましいので、requireを使用しそれ以降の処理を中断した方が良いでしょう。
include_onceとrequire_once(おまけ)
同じような働きをする関数にinclude_onceとrequire_onceという関数があります。
include_onceとrequire_once共に一度だけ読み込みが行われ、既に読み込まれていた場合にはその後読み込みが行われない、という特徴があります。
<?php
include("include.php");
include_once("include.php"); //上で既に読み込まれているのでこの行では読み込まれない
<?php
include("include.php"); //読み込まれる
include("include.php"); //読み込まれる
include("include.php"); //読み込まれる
require_once("include.php"); //上で既に読み込まれているのでこの行では読み込まれない
まとめ
- スクリプトの中で一度しか読み込む必要がないものは_once付きの関数を使用。
- エラー発生時に処理を停止する場合はrequireを使用。
シーンに合わせ考察する必要があります。それぞれの特性を理解したうえ、継続して処理を行うのか中断するのか、全体を把握しながら見極めて行きましょう。