プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、requireとrequire_onceの違い
結論から書けば

require→何回でも読むよ
require→一回しか読まないよ(もう読み込んでいたら読まないよ)

が違います。それだけ。

昔書いたつもりなのですが見つからなかったので、再度(?)書いておきます。

例えば、こんな中身の「hoge.php」を用意してφ(--)
<?php

print "hoge<br>\n";

このコードを実行するとφ(--)

<?php

print "■require_once start<br>\n";

//require_once
require_once("hoge.php");

//require_once2回目
require_once("hoge.php");

print "□require_once end<br>\n";

print "■require start<br>\n";

//require
require("hoge.php");

//require2回目
require("hoge.php");

print "□require end<br>\n";

こんな結果になりますφ(--)

■require_once start
hoge
□require_once end
■require start
hoge
hoge
□require end

require_onceの2回目の「hoge」が出力されていないですね。
2回目のrequire_onceで「hoge.php」が読み込まれていないことが分かります。

ちなみに「require_onceの回数」では無く「読み込んだ回数」なのでご注意ください。
例えば、こんなコードを実行するとφ(--)

<?php

print "■require start<br>\n";

//require
require("hoge.php");

print "□require end<br>\n";

print "■require_once start<br>\n";

//require_once
require_once("hoge.php");

print "□require_once end<br>\n";

こんな結果になりますφ(--)

■require start
hoge
□require end
■require_once start
□require_once end

「hoge.php」は1回目のrequireで読み込まれています。
例えrequire_onceが1回目でも既に読み込まれたファイル(hoge.php)は読み込まれないのです。

require_onceさんは何気に便利な奴ですよ。
例えば、関数を定義した外部ファイルはrequireではなくrequire_onceで読み込むのが一般的です。
requireで読み込むと重複定義になることが往々にしてあるので。

外部ファイルを読み込む関数はいろいろありますが、個人的には

require_once→大抵これ。
require→たまーに必要に迫られて使う。けど滅多に使わない。
include_once→使わない。
include→使わない。

ってな感じですかね。
requireとincludeの違いについては

PHP、includeとrequireの違い

をご覧ください。

取りあえず、完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事