【PHP】includeとinclude_onceの違い

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

[スポンサーリンク]

[スポンサーリンク]

  
関連記事
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
サイト内検索
プロフィール

プロフィール

[Name : POCO(@PocoIt2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

カテゴリ


タグ

[スポンサーリンク]

最近の記事