305 文字
2 分
PHPで、include先ファイルがどこから呼ばれてるのか判定できる?

はい、PHPでinclude先のファイルがどこから呼び出されているかを判定することができます。主に以下の方法があります:

  1. debug_backtrace() 関数を使用する: この関数は呼び出し履歴の情報を含む配列を返します。include先のファイル内で以下のようなコードを使用します。

    $backtrace = debug_backtrace();
    $caller = $backtrace[0]['file'];
    echo "このファイルは {$caller} から呼び出されました。";
  2. get_included_files() 関数を使用する: この関数はスクリプトに読み込まれたすべてのファイルの名前を配列で返します。

    $included_files = get_included_files();
    foreach ($included_files as $filename) {
    echo "$filename\n";
    }
  3. FILE と $_SERVER[‘SCRIPT_FILENAME’] を比較する: 現在のファイルが直接実行されているか、includeされているかを判断できます。

    if (__FILE__ != $_SERVER['SCRIPT_FILENAME']) {
    echo "このファイルはincludeされています。";
    }

これらの方法を使用することで、include先のファイルがどこから呼び出されているかを判定できます。ただし、複雑な構造のプロジェクトでは、正確な呼び出し元を特定するのが難しい場合もあるので注意が必要です。