2014-04-19 49 views
0

我工作的一个项目,这种方式组织:项目基本目录PHP

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'; 

我得到的结果里面文件文件夹,但是当我使用panel子文件夹中的文件执行此操作时,PHP无法找到我的类(对于模板而言是同样的事情)。 我想知道,处理这个问题的最好方法是什么?

PS我的工作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

尝试使用绝对路径。因为如果你从'panel'调用,路径应该是'../../ resources/core/init.php'。 – iamsleepy

回答

0

您可以使用__DIR____DIR__常量计算到包含使用它的文件的目录(它不包含结尾斜杠)。

<?php 

// resources/bootstrap.php 

# /some/project/dir/resources 
echo __DIR__; 

使用dirname(__DIR__)去上一级。

此外,通知__DIR__可用于PHP≥5.3.0,在旧版本中您必须使用dirname(__FILE__)