hj01
@hj01

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ソースコードについての質問です。

質問

database.phpの
if (!defined('ROOT_PATH')) {
define('ROOT_PATH', $_SERVER["DOCUMENT_ROOT"]);
}
があるときとないときで動きに違いはありますか?
もしあるならエラーは発生したりしますか?
または問題が発生したりしますか?
わかりやすく解説をお願いします。

database.php

<?php
if (!defined('ROOT_PATH')) {
  define('ROOT_PATH', $_SERVER["DOCUMENT_ROOT"]);
}
define('DB_HOST', 'localhost');    //データベースのホスト名またはIPアドレス
define('DB_USER', 'blog_user');    //MySQLのユーザー名
define('DB_PASSWD', 'root');       //MySQLのパスワード
define('DB_NAME', 'test');         //データベース名
?>
0

2Answer

処理内容は、
ROOT_PATHという変数が存在しなかった場合に
$_SERVER["DOCUMENT_ROOT"]の値をROOT_PATHという変数名で設定するif文ですね。

if文の意図としては、
ROOT_PATHに値が設定されていれば、設定された値を使用したいけど、設定されていなかった場合は、参照したときにエラーとなるため、変数を定義しておきたい
という感じでしょうか

if文がなかった場合のエラーケースとしては
ROOT_PATHという変数が定義されていない + 処理中にROOT_PATHの値を使用しようとした場合に
Notice: Undefined variableとエラーが出るとかでしょうか
defined()関数説明
define()関数説明

0Like

Comments

  1. @hj01

    Questioner

    ありがとうございます。
    参考になりました。

defined()ROOT_PATHという定数が存在しない場合に
サーバー情報から現在実行されているスクリプトのドキュメントルートを取得して
define()ROOT_PATHという名前の定数へセットしている形となります。

別ファイルでROOT_PATHの定数を定義していれば問題ないですが、
そうでない場合にはエラーになる可能性が出てきます。

0Like

Comments

  1. @hj01

    Questioner

    ありがとうございます。
    参考になりました。

Your answer might help someone💌