PHP開発では、プロジェクト構造には通常、複数のサブディレクトリが含まれており、ファイルの導入と管理が複雑になります。多数の相対パスを使用してファイルの導入を避けるために、PHPは2つの非常に実用的な機能を提供しますget_include_path()とset_include_path()を提供します。
この記事では、これら2つの機能の関数と使用法を詳細に紹介し、例を使用して、クロスディレクトリファイルの紹介を効率的に管理する方法を説明します。
include_pathは、phpが含まれる、要求、その他のステートメントの実行時にファイルを検索するパスのパスリストを指定するphpの構成オプションです。合理的なinclude_pathを設定すると、複雑な相対パスを書きたくない場合、または同じファイルが複数の場所で参照されている場合、コードを大幅に簡素化できます。
get_include_path()
現在のPHPランタイムのinclude_path構成値を返します。
set_include_path(string $ new_include_path)
現在のPHPランタイムのinclude_pathを設定し、新しいパス文字列に置き換えます。
プロジェクトディレクトリ構造が次のとおりであるとします。
/project
/libs
helper.php
/modules
moduleA.php
index.php
helper.phpがいくつかのパブリック関数である場合、 modulea.phpはhelper.phpを参照する必要があり、 index.phpはエントリファイルです。
相対パス参照を直接使用する場合:
// moduleA.php
include '../libs/helper.php';
ファイルパスが変更されると、参照パスも変更する必要があります。これはより面倒です。
index.phpでは、 include_pathを設定して、指定されたディレクトリ内のファイルを自動的に検索できるようにすることができます。
<?php
// index.php
// 現在のものを取得します include_path
$current_path = get_include_path();
// 新しい /libs ディレクトリに include_path 真ん中
$new_path = $current_path . PATH_SEPARATOR . __DIR__ . '/libs';
// 新しいものをセットアップします include_path
set_include_path($new_path);
// その後、直接できます moduleA.php 真ん中 include 'helper.php',相対パスを書く必要はありません
?>
<?php
// moduleA.php
include 'helper.php'; // PHP ここにあります include_path 真ん検索します helper.php
?>
helper.phpで単純な関数を書きます:
<?php
// helper.php
function greet($name) {
return "Hello, $name!";
}
?>
modulea.php :
<?php
include 'helper.php';
echo greet('World');
?>
index.phpを実行すると、phpは/libsディレクトリにhelper.phpを見つけます。これは、 include_pathを設定し、正常に呼び出すためです。
複数のパスセパレーター<br> Linux/Unixの場合はWindowsおよびColon ( :)の下でSemicolon( ; )を使用しますが、PHP Constant Path_Separatorは自動的に適応し、使用することをお勧めします。
相対パスと絶対パス<br> パス解像度のエラーを避けるために、絶対パス( __dir__。 '/libs'など)を使用することをお勧めします。
動的設定vs php.ini構成<br> PHP.INIでcontering_pathを直接構成することもできますが、プロジェクトの動的設定はより柔軟です。
安全上の考慮事項<br> Codeが注入されたり、悪意のあるファイルが含まれたりするのを防ぐために、 conter_pathを含めるように信頼されていないパスを追加しないでください。
get_include_path()を使用して、現在の検索パスを取得します。
Directoryを追加して、 set_include_path()を介して_pathを介してcross-directoryファイルの紹介を実装します。
includeを使用して、または要求している場合、複雑な相対パスを記述する必要はなく、コードはより明確で維持が容易になります。
ファイルを正確に見つけることができることを確認するために、絶対パスと組み合わせて使用します。