-1

我很难设置每页的包含属性。

当一切都在同一个目录中时,它似乎工作正常,但是如果我从另一个目录引用一个页面,那么一切都会停止工作,因为它可能应该这样做。

现在,从 php 中的不同目录引用类和文件的最佳方法是什么?一定有人想出了从不同文件夹引用文件的技巧。

目前,我正在按照以下方式进行操作

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

现在 Authenticate.php 可以引用另一个类或包含另一个代码。那么你如何让这一切一起工作呢?

4

4 回答 4

0

您可以将其放在索引页面的顶部,显然将路径更改为与您的应用程序相关的路径。然后从包含路径集中的任何位置简单地包含('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 回答
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 回答