如何在大型PHP项目中保持一致的目录范围?

如何在大型PHP项目中保持一致的目录范围?,php,include,directory,directory-structure,Php,Include,Directory,Directory Structure,我是一个相对较新的开发人员,正在处理我的第一个“大型”网站。我希望在整个项目中有一个持久的目录范围,以便于开发。我的意思是: 假设我有一个结构如下的(简化)目录: Site Root/ index.php js/ css/ img/ classes/ includes/ 如果我在index.php中工作,并且希望包含类中的文件,那么很容易: include('classes/user.php'); 但是,如果我深入到includes文件夹中,想要包含一个类,它就会变得

我是一个相对较新的开发人员,正在处理我的第一个“大型”网站。我希望在整个项目中有一个持久的目录范围,以便于开发。我的意思是:

假设我有一个结构如下的(简化)目录:

Site Root/
  index.php
  js/
  css/
  img/
  classes/
  includes/
如果我在
index.php
中工作,并且希望
包含
类中的文件
,那么很容易:

include('classes/user.php');
但是,如果我深入到includes文件夹中,想要包含一个类,它就会变得很混乱:

include('../../../classes/user.php');
最理想的情况是,我希望能够说
include('classes/user.php')从任何文件中

我可以采取什么措施使我的目录结构尽可能容易访问?我正在考虑在每个页面上包含某种类型的include,它存储相对于当前目录的根目录,并将其保存为字符串,但我不确定最好的方法是什么


编辑:不确定为什么标记为“太宽”?我想我的问题很具体,但如果不是这样的话,请告诉我。

首先,在使用
includes()
requires()
时,请始终尝试使用
\uu DIR\uu
,因为缺少它有时会导致错误,并且会使查找错误脚本变得更容易

至于调用脚本,您应该使用根路径的常量。像这样:

// Value is something like '/var/www'
define('PATH_BASE', __DIR__, 1);
// Value is '/var/www/system/'
define('PATH_SYS', PATH_BASE.'/system/', 1);
// Value is '/var/www/assets/css/'
define('PATH_CSS', PATH_BASE.'/assets/css/', 1);
// Value is '/var/www/assets/js/'
define('PATH_JS', PATH_BASE.'/assets/js/', 1);

// Will always get '/var/www/system/core.php' no matter where it is called
require (PATH_SYS.'core.php');
这可能是最简单、最有效的方法,但远不是唯一的方法。请记住,
\uuu DIR\uu
使用调用它的文件的基本路径,而不是请求的文件

因此,如果请求的文件是“”(aka'/var/www/index.php'),但是在'/var/www/system/core.php'中调用了
\uuuuuu DIR\uuuuu
\uuuu DIR\uuuu
的值将是'/var/www/system'