我很难设置每页的包含属性。
当一切都在同一个目录中时,它似乎工作正常,但是如果我从另一个目录引用一个页面,那么一切都会停止工作,因为它可能应该这样做。
现在,从 php 中的不同目录引用类和文件的最佳方法是什么?一定有人想出了从不同文件夹引用文件的技巧。
目前,我正在按照以下方式进行操作
include ("../config/Authenticate.php");
现在 Authenticate.php 可以引用另一个类或包含另一个代码。那么你如何让这一切一起工作呢?
您可以将其放在索引页面的顶部,显然将路径更改为与您的应用程序相关的路径。然后从包含路径集中的任何位置简单地包含('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 的公用文件夹,以及公用文件夹之外的所有其他文件。
您可以__DIR__
在包含路径中使用来设置相对于文件的路径。
您包括将成为:
include (__DIR__ . "/../config/Authenticate.php");
如果您包含的文件需要包含另一个文件,只要您在该文件中也有包含脚本,它应该可以工作。
这是一种对我有用的方法。
$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 的这种方法可能适用于大多数人。