-1

ページごとにincludeプロパティを設定するのに苦労しています。

すべてが同じディレクトリにある場合は正常に機能しているようですが、別のディレクトリからページを参照すると、おそらく正常に機能しなくなります。

では、phpのさまざまなディレクトリからクラスとファイルを参照するための最良の方法は何ですか?別のフォルダからファイルを参照するためのトリックを理解した人がいたに違いありません。

現在、私は次のようにそれをやっています

include ("../config/Authenticate.php");

これで、Authenticate.phpは別のクラスを参照したり、別のコードを含めたりすることができます。では、どのようにしてすべてを連携させるのですか?

4

4 に答える 4

0

これが私のためにうまくいったアプローチです。

$arr_path = explode(DIRECTORY_SEPARATOR, __DIR__);

$arr_path = array_reverse($arr_path);
$depthCounter=0;
for($i=0;$i<count($arr_path);$i++){
    // just replace BDW with your main directory
    if ($arr_path[$i] === "BDW"){
        $depthCounter = $i;
    }   
}
// clear array
unset($arr_path);

$DEPTH = "";
for($i=0;$i<$depthCounter;$i++){
    $DEPTH= $DEPTH . "../";
}


include ($DEPTH . 'config/SessionStart.php');

これは最もクリーンなコードではありません。しかし、それはうまくいくようです。この@MonsterTKEのアプローチを統合することは、おそらくほとんどの人にとってうまくいくでしょう。

于 2013-03-16T19:41:54.680 に答える
0

これをインデックス ページの上部に配置し、パスをアプリケーションに関連するパスに変更することができます。次に、インクルード パス セット内の任意の場所から単に include('some_file.php') を実行します。

$publicPath = getcwd();
chdir(__DIR__ . "/..");
$sitePath = getcwd();
chdir($publicPath);

$paths = array(
    $sitePath . '/config',
    $sitePath . '/config/foo',
    $sitePath . '/foo',
    $sitePath . '/foo/bar',
    get_include_path()
);

set_include_path(implode(PATH_SEPARATOR, $paths));
unset($paths);

編集* これは、内部に index.php を含むパブリック フォルダーがあり、パブリック フォルダーの外部に他のすべてのファイルがあることを前提としています。

于 2013-03-16T18:35:54.407 に答える
0

インクルード パスで を使用__DIR__して、ファイルに対する相対パスを設定できます。

含めると次のようになります。

include (__DIR__ . "/../config/Authenticate.php");
于 2013-03-16T18:36:20.480 に答える
0

インクルードするファイルに別のファイルをインクルードする必要がある場合、そのファイル内にインクルード スクリプトもある限り、機能するはずです。

于 2013-03-16T18:36:25.347 に答える