【PHP】includeとinclude_onceの違い
-
カテゴリ:
- PHP
include_onceとincludeの違いがいまいち曖昧だったのでいろいろ試しながら検証してみたのでメモ。
include_onceとincludeの違い
includeとinclude_onceは「外部のファイルを読み込み、利用可能にする」点は同じですが、includeは何回もファイルを読み込むことができるのに対し、include_onceは一度のみファイルを読み込むことが可能です。
どういうことかこれから検証していきます。
下記の例を見てください。
test2.php
<?php_
$inc = 0;
$inc_one = 0;
echo "inc:{$inc} inc_one:{$inc_one}\r\n";
echo '-----------------------\r\n';
include('test2-1.php');
include_once('test2-2.php');
echo '-----------------------\r\n';
include('test2-1.php');
include_once('test2-2.php');
echo '-----------------------\r\n';
include('test2-1.php');
include_once('test2-2.php');
?>
test2-1.php
<?php_
$inc += 1;
echo "[includeしました]inc:{$inc} inc_one:{$inc_one}\r\n";
test2-2.php
<?php_
$inc_one += 1;
echo "[include_onceしました] inc:{$inc} inc_one:{$inc_one}\r\n";
上記の結果は以下の通りになります。
$php test1.php
# 結果
# -----------------------
# [includeしました]inc:1 inc_one:0
# [include_onceしました] inc:1 inc_one:1
# -----------------------
# [includeしました]inc:2 inc_one:1
# -----------------------
# [includeしました]inc:3 inc_one:1
結果として、includeの場合は何度も実行するとファイルの読み込みも行われるため、$incの値がincludeされた回数分加算されています。
しかしinclude_onceは一度しか同じファイルは読み込まれないため、2回目以降のinclude_once無視され、$inc_oneの値も1で止まっています。
続いて、今度は途中までincludeしていたファイルと途中からinclude_onceしたらどうなるでしょう。上記のtest2.phpを下記のように修正してみます。
test2.php
<?php_
include('test2-1.php');
include_once('test2-2.php');
echo '-----------------------\r\n';
include('test2-1.php');
include('test2-2.php');
echo '-----------------------\r\n';
include('test2-1.php');
include_once('test2-2.php');
実行します。
$php test2.php
# 結果
# inc:0 inc_one:0
# -----------------------
# [includeしました]inc:1 inc_one:0
# [include_onceしました] inc:1 inc_one:1
# -----------------------
# [includeしました]inc:2 inc_one:1
# [include_onceしました] inc:2 inc_one:2
# -----------------------
# [includeしました]inc:3 inc_one:2
投稿日:2019-04-29
更新日:2019-04-29