• ベストアンサー

onceの意味

質問させてください。 最近PHPを学び始めたものです。 PHPの命令として、onceというものがあることを知りました。 require_once,include_onceなど対象となるファイルの読み込みを一度しか行わないそうですが、それを行う利点は何なんでしょうか? よろしければお教えください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

classやfunctionなど同じ名前で2度宣言できないものがあります。 ソースを二度includeすると競合してエラーになります。 おもにライブラリをロードするときにつかいます。 では_onceだけでいいじゃない?という質問があるかもしれませんが 競合しないソースをテンプレのように何度も取り込む可能性があります。 (効率的なフローか否かは度外視して) 結局は場合によって使い分けることになります

ryu-e
質問者

お礼

ありがとうございました。 エラー回避の目的があったのですね。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10361)
回答No.2

X.php, Y.php という2つのライブラリファイルを必要とするプログラムがあったとします。 ところが、X.php も Y.php もそれぞれ、A.php というライブラリを必要とする物でした。 これを、 メインプログラム: require "X.php"; require "Y.php"; 処理。。。 X.phpファイル: require "A.php"; 処理。。。 Y.phpファイル: require "A.php"; 処理。。。 これだと、A.phpが二回読み込まれてしまいますね。 A.phpの中に#1の方が書いたように「一度しか書いてはいけない処理」があるとまずいわけです。これを避けるためにはXかYのどちらかしか同時に使えない?? と言う理由で、ライブラリはrequireじゃなくて、require_onceします。これで、「どのライブラリがどのライブラリを内部で使っているか」を意識せずに済みます。 もちろん「二回読むのは時間の無駄」という理由もあります。

ryu-e
質問者

お礼

回答ありがとうございました。 二重インクルード防止という目的があったのですね。

関連するQ&A