質問: A.classというファイルとB.classというファイルがあって、お互いのファイルの先頭で A.classファイル ``` require_once B.class.php ``` B.classファイル ``` require_once A.class.php ``` という記述がある既存のコードがあったのですが、お互いのクラスファイルを呼び出すことってあるんでしょうか? なんかループしてしまうような気がするのですが、そもそもこのコードが間違っているのでしょうか?
回答: 関数の挙動について疑問がある場合は、 PHPの公式マニュアル PHPマニュアル を確認し、実際に試すのが早くて確実です。 今回の場合 a.php ``` > require_once 文は require とほぼ同じ意味ですが、 ファイルがすでに読み込まれているかどうかを PHP がチェックするという点が異なります。 すでに読み込まれている場合はそのファイルを読み込みません。_once の振る舞い、およびそれが _once なし版とどのように異なるのかについての情報は、 include_once のドキュメントを参照ください。 > > > include_once 命令は、スクリプトの実行時に指定 したファイルを読み込み評価します。この動作は、 include 命令と似ていますが、ファイルからのコー ドが既に読み込まれている場合は、再度読み込まれないという重要な違い があります。また、include_once は TRUE を返します。その名が示す通り、ファイルは一度しか読み込まれません。 > > include_once は、スクリプトの実行時に同じファイ ルが複数回読み込まれ、評価される可能性がある場合に、関数の再定義や 変数値の再代入といった問題を回避するために一回だけ読み込ませるため に使用します。 > > > require_once,include_onceによる読み込みは、自分自身も含めてその実行タイミングで一度しか読まれないことを意味する。 ということが分かります。