如何在大型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'