我正在以这种方式组织一个项目:
public_html/
index.php
file1.php
file2.php
...
css/
basic.css
panel/
file3.php
...
resources/
classes/
class1.php
class2.php
...
core/
init.php
includes/
templates/
header.php
footer.php
以下是我在init.php
文件中的部分内容:
spl_autoload_register(function ($class) {
require_once '../resources/classes/' . $class . '.php';
}
);
在每个php文件中,我只需要init.php
:
<?php
require_once '../resources/core/init.php';
我使用public_html
文件夹中的文件获得结果,但是当我使用panel
子文件夹中的文件执行此操作时,PHP无法找到我的类(模板也是如此)。
我想知道,处理这个问题的最佳方法是什么?
P.S我正在localhost/
同样在header.php中:
<html>
<head>
<link rel="stylesheet" href="css/basic.css" type="text/css" />
<title><?php echo $title ?></title>
</head>
从public_html
文件夹中调用它时,一切正常,从panel
子文件夹调用时,没有CSS ......
答案 0 :(得分:1)
您可以使用__DIR__
。 __DIR__
常量计算到包含使用它的文件的目录(它不包括尾部斜杠)。
<?php
// resources/bootstrap.php
# /some/project/dir/resources
echo __DIR__;
使用dirname(__DIR__)
升级一级。
此外,注意__DIR__
在PHP≥5.3.0中可用,在旧版本中,您必须使用dirname(__FILE__)
。