get_include_path()は、PHPによって提供される組み込み関数であり、現在のパスを取得するために使用されます。このパスには、ファイルを探すときにPHPが検索するディレクトリが含まれています。他のファイルを導入するためにコードに含めるか要求する場合、PHPはこれらのパスに基づいてファイルを探します。ファイルパスが明示的に指定されていない場合、PHPはこれらのパスのターゲットファイルを順番に探します。
get_include_path() curring includeのパスを表す文字列を返します。これらのパスは、set_include_path()関数によって変更できます。
<?php
$include_path = get_include_path();
echo $include_path;
?>
モジュール性は、ソフトウェア開発の設計原則です。つまり、コードは、開発、テスト、デバッグ、更新できる小さな独立モジュールまたはクラスに分解されます。 PHPでは、自動負荷メカニズムでget_include_path()を使用すると、クラスファイルを効果的に整理およびロードすることができ、各ファイルを手動で導入する手間を避けます。
まず、適切なインクルードパスを設定し、すべてのクラスライブラリファイルがパスに配置されているディレクトリを追加できます。たとえば、サードパーティのクラスライブラリ用のLIBディレクトリがある場合、またはプロジェクトのコアコード用のSRCディレクトリがある場合は、次の方法でこれらのディレクトリをPATHに追加することができます。
<?php
// 意思libそしてsrcパスを含めるためにディレクトリを追加します
set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/lib' . PATH_SEPARATOR . '/path/to/src');
?>
適切なインクルードパスを設定することにより、PHPは、各ファイルのフルパスを手動で指定することなく、関数を含めるか、必要な機能に基づいてこれらのディレクトリでファイルを自動的に検索できます。
get_include_path()関数と組み合わせることで、自動読み込みメカニズムは、すべてのファイルを一度にロードするのではなく、必要に応じてクラスファイルを動的にロードするのに役立ちます。 PHPのspl_autoload_register()関数により、自動負荷関数を登録できます。これは、未定義のクラスにアクセスするときに自動的にトリガーされます。
<?php
function autoload($class_name) {
$include_path = get_include_path();
$file = str_replace('\\', DIRECTORY_SEPARATOR, $class_name) . '.php';
$file_path = $include_path . DIRECTORY_SEPARATOR . $file;
if (file_exists($file_path)) {
require_once $file_path;
}
}
spl_autoload_register('autoload');
?>
この例では、未定義のクラスを使用すると、PHPはAutoLoAD関数を呼び出し、クラスファイルを見つけて、含まれているパスに従ってロードします。これにより、クラスファイルをオンデマンドで読み込み、メモリの使用量を削減し、実行効率を向上させることができます。
クラスライブラリに複数のドメイン名でアクセスする必要がある場合、 get_include_path()は、クロスドメインの負荷の問題を解決するのにも役立ちます。たとえば、1つのドメイン名の下にクラスライブラリが展開され、アプリケーションが別のドメイン名の下に展開されているとします。クラスライブラリを正常にロードできるようにするには、適切なインクルージョンパスを設定することにより、異なるドメイン名の下のファイルを参照できます。
<?php
// 意思GitBox.netコンテンディングパスのドメイン名として
set_include_path(get_include_path() . PATH_SEPARATOR . 'http://gitbox.net/path/to/lib');
?>
このようにして、gitbox.netドメイン名の下でクラスライブラリにアクセスすると、PHPはこのパスを介して関連ファイルをロードします。