- ベストアンサー
onceの意味
質問させてください。 最近PHPを学び始めたものです。 PHPの命令として、onceというものがあることを知りました。 require_once,include_onceなど対象となるファイルの読み込みを一度しか行わないそうですが、それを行う利点は何なんでしょうか? よろしければお教えください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
classやfunctionなど同じ名前で2度宣言できないものがあります。 ソースを二度includeすると競合してエラーになります。 おもにライブラリをロードするときにつかいます。 では_onceだけでいいじゃない?という質問があるかもしれませんが 競合しないソースをテンプレのように何度も取り込む可能性があります。 (効率的なフローか否かは度外視して) 結局は場合によって使い分けることになります
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10361)
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します。これで、「どのライブラリがどのライブラリを内部で使っているか」を意識せずに済みます。 もちろん「二回読むのは時間の無駄」という理由もあります。
お礼
回答ありがとうございました。 二重インクルード防止という目的があったのですね。
お礼
ありがとうございました。 エラー回避の目的があったのですね。