【PHP8.x】get_required_files関数の使い方

作成日: 更新日:

get_required_files関数は、PHPスクリプト内でrequire、include、require_once、include_onceステートメントを使用して読み込まれたすべてのファイルを配列として返す関数です。この関数は、スクリプトが依存するファイルを特定し、実行に必要なファイルのリストを把握するのに役立ちます。特に、大規模なプロジェクトや複雑なアプリケーションにおいて、依存関係を管理し、デバッグを行う際に有用です。

この関数は引数を取らず、呼び出された時点で読み込まれているすべてのファイルを返します。返される配列には、一度しか読み込まれていないファイルも、複数回読み込まれたファイルも含まれます。ただし、同一ファイルが複数回読み込まれた場合でも、配列にはそのファイルパスが一度だけ含まれます。

get_required_files関数は、スクリプトの実行コンテキストに依存します。つまり、関数が呼び出された時点で読み込まれているファイルのみが返されます。したがって、関数の呼び出し位置によって結果が異なる可能性があります。例えば、あるファイルを読み込む前にget_required_files関数を呼び出した場合、そのファイルは返される配列には含まれません。

この関数は、PHPの内部関数であり、PHPコアによって提供されます。そのため、追加の拡張機能をインストールする必要はありません。PHPがインストールされていれば、すぐに利用することができます。get_required_files関数を使用することで、アプリケーションの依存関係を可視化し、より効率的な開発とデバッグを行うことが可能になります。また、自動化されたビルドプロセスやデプロイメントスクリプトにおいて、必要なファイルを特定するためにも利用できます。

基本的な使い方

構文(syntax)

get_required_files(): array

引数(parameters)

引数なし

引数はありません

戻り値(return)

array

指定されたPHPスクリプトの実行によって要求されたすべてのファイル(include、require、include_once、require_onceなどで読み込まれたファイル)のパスを配列として返します。

サンプルコード

PHP get_required_filesで読み込みファイル一覧を取得する

<?php

declare(strict_types=1);

/**
 * get_required_files() 関数の動作を実演します。
 *
 * この関数は、`require`, `include`, `require_once`, `include_once` によって
 * スクリプト実行中に読み込まれたすべてのファイルのパスを配列で返します。
 *
 * このサンプルでは、実行中に動的にファイルを作成して `require` し、
 * 読み込まれたファイルのリストがどのように変化するかを確認します。
 */
function demonstrateGetRequiredFiles(): void
{
    // --- 準備: 読み込むための一時ファイルを作成 ---
    $tempFileName = 'temporary_included_file.php';
    $fileContent = '<?php // このファイルはサンプルコードによって動的に生成・読み込みされました。';

    if (file_put_contents($tempFileName, $fileContent) === false) {
        echo "エラー: 一時ファイルの作成に失敗しました。\n";
        return;
    }

    echo "--- 1. require を実行する前の状態 ---\n";
    // この時点では、主に実行中のスクリプトファイル自身がリストに含まれます。
    print_r(get_required_files());
    echo "\n";


    // --- 実行: 作成した一時ファイルを読み込む ---
    require $tempFileName;


    echo "--- 2. '{$tempFileName}' を require した後の状態 ---\n";
    // get_required_files() を再度呼び出し、読み込まれたファイルのリストを取得します。
    // 新しく require されたファイルがリストに追加されていることがわかります。
    $requiredFiles = get_required_files();

    echo "現在、以下のファイルが読み込まれています:\n";
    foreach ($requiredFiles as $index => $filePath) {
        // realpath() で正規化された絶対パスを表示します。
        $realPath = realpath($filePath);
        echo ($index + 1) . ": " . $realPath . "\n";
    }

    // --- 後片付け: 作成した一時ファイルを削除 ---
    unlink($tempFileName);
}

// サンプル関数を実行します。
demonstrateGetRequiredFiles();

get_required_files()関数は、スクリプトの実行中に読み込まれた全てのファイルのパスを配列で取得するPHPの組み込み関数です。requireincluderequire_onceinclude_onceといった命令文によって読み込まれたファイルが対象となります。この関数は引数を取らず、戻り値として各ファイルの絶対パスが格納された配列を返します。

このサンプルコードでは、get_required_files()の動作を段階的に示しています。まず、require文を実行する前に一度この関数を呼び出し、その時点での読み込み済みファイルリストを表示します。次に、プログラム内で動的に新しいPHPファイルを作成し、それをrequireで読み込みます。その後、もう一度get_required_files()を呼び出すと、先ほどrequireしたファイルのパスが配列に追加されていることが確認できます。

このように、この関数を使うことで、プログラムが実行されている最中にどのファイルが読み込まれているかを動的に把握することが可能です。これは、依存関係の確認やデバッグの際に役立ちます。

get_required_files()関数は、呼び出された時点で読み込まれているファイルの一覧を配列で返します。この関数は主にデバッグ目的で使われ、意図しないファイルが読み込まれていないか、あるいは必要なファイルが正しく読み込まれているかを確認する際に役立ちます。注意点として、この関数が返すパスは相対パスの場合があるため、サンプルコードのようにrealpath()関数で絶対パスに正規化してから扱うと、環境の違いによる問題を避けられ安全です。また、require_onceinclude_onceによって一度読み込まれたファイルは、重複してリストに追加されることはありません。呼び出すタイミングによって結果が変わるため、どの時点でどのファイルが読み込まれているかを意識することが重要です。

【PHP8.x】get_required_files関数の使い方 | いっしー@Webエンジニア