PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのrequire_onceステートメントとは?使い方とrequireとの違いを解説

はじめに

PHPのrequire_onceステートメントは、requireステートメントとほぼ同じ働きをします。唯一の違いは、すでに一度読み込まれたファイルは二度と読み込まれないという点です。なお、includeやrequireで読み込まれたファイルについても、その後にrequire_onceを使っても再度読み込まれることはありません。

それ以外の動作は、すべてrequireステートメントと同一です。

require_onceの基本的な使い方

次の例では、メインのPHPスクリプトからtest.phpを読み込んでいます。

コード例

<?php
echo "inside main script\n";
echo "now including with require_once test.php script\n";
require_once "test.php";
echo "try to include it again";
require_once "test.php";
?>
//test.php
<?php
echo "File included\n";
?>

実行結果

メインスクリプトをコマンドラインから実行すると、次のように出力されます。

inside main script
now including with require_once test.php script
File included
try to include it again

このように、2回目のrequire_once呼び出しではtest.phpの中身が再度実行されていないことが確認できます。これにより、関数定義やクラス定義の重複による「Cannot redeclare」エラーを防ぐことができます。

require_once失敗時のエラー

require_onceもrequireと同様、存在しないファイルを読み込もうとした場合には致命的なエラー(Fatal Error)が発生し、スクリプトの実行が中断されます。

コード例

<?php
echo "inside main script\n";
echo "now including with require_once notest.php script\n";
require_once "notest.php";
?>

実行結果

次のような結果が出力されます。エラー発生時点でプログラムが強制終了される点に注目してください。

inside main script
now including with require_once notest.php script
PHP Fatal error: require_once(): Failed opening required 'notest.php' (include_path='C:\xampp\php\PEAR') in line 4
Fatal error: require_once(): Failed opening required 'notest.php' (include_path='C:\xampp\php\PEAR') in line 4

include・require・include_once・require_onceの違いまとめ

ステートメントファイルが存在しない場合再読み込み
include警告(Warning)を出し、処理を続行あり
requireFatal Errorが発生し、処理を中断あり
include_once警告(Warning)を出し、処理を続行なし
require_onceFatal Errorが発生し、処理を中断なし

ライブラリや設定ファイルなど、必ず読み込む必要があり、かつ重複読み込みを避けたいファイルには、require_onceを使用するのが一般的です。

  1. PHPのbreakステートメントとは?ループとswitchを抜ける方法を実例で解説

    はじめにbreakステートメントは、PHPにおけるループ制御のためのキーワードのひとつです。while、do-while、for、foreachといったループ処理やswitch文の中でプログラムの流れがbreakに到達すると、そのループ(またはswitchブロック)内の残りの処理はすべてスキップされ、ループの直後にある処理へと実行が移ります。基本構文while (expr) {     ..     ..     if (expr1)    &n

  2. HTMLをPHPの「if」文の中に埋め込む方法をわかりやすく解説

    はい、PHPを使えばHTMLを「if」文の中に埋め込むことができます。条件分岐の結果に応じて異なるHTMLを出力したい場面は非常に多く、そのためにいくつかの書き方が用意されています。ここでは代表的な3つの方法を紹介します。 方法1:代替構文(if〜endif)を使う PHPには、コロン「:」と「endif;」を組み合わせた代替構文があります。波括弧「{}」を使わないため、PHPとHTMLが混在するテンプレートでは特に読みやすくなります。 <?php if($condition) : ?>     <a href="http