1

这很简单,但大多数时候很混乱..

我需要知道当我们通过以下模式包含文件时意味着什么(我在很多地方看到的可能不止这些)

这是什么意思 ?

"./path" 

"/path"

"../path"

dirname(__FILE__)

basename(dirname(dirname(__FILE__)));

require dirname(__FILE__) . DIRECTORY_SEPARATOR;

pathinfo()

define('BASE_PATH',realpath('.'));

define('BASE_URL', dirname($_SERVER["SCRIPT_NAME"]));
4

1 回答 1

2

“。/小路”

点指的是工作目录。这是在命令行上键入“pwd”时打印的目录。这可能是脚本本身的目录,也可能是首先运行的脚本的目录,但并非总是如此。

“/小路”

以斜杠开头的路径是相对于最顶层目录的。这通常是服务器的根目录,但也可以是挂载点、您的用户目录,或者可能是您的 Web 根目录,具体取决于服务器的配置方式。

“../小路”

“..”是指工作目录上一层的目录。所以如果工作目录是/foo/bar,那么“..”就是“/foo”,“../path”指的是“/foo/path”

目录名(__FILE__)

dirname() "返回父目录的路径。" __FILE__ 是一个魔术常量,它指的是使用它的文件的完整路径。因此,如果您在 /foo/bar/baz/file.php 有一个脚本,则 __FILE__ 将是“/foo/bar/baz/file.php”,而 dirname(__FILE__) 将是“/foo/bar/baz”

基本名称(目录名(目录名(__FILE__)));

basename() "返回路径的尾随名称组件"。相同的规则适用于 dirname(),因此上一个示例中的 dirname(__FILE__) 是“/foo/bar/baz”,而 dirname(dirname(__FILE__)) 将是“/foo/bar”。此路径的尾随组件是“bar”,因此对于此 __FILE__ , basename(dirname(dirname(__FILE__))) 将是“bar”。

需要 dirname(__FILE__) 。DIRECTORY_SEPARATOR;

DIRECTORY_SEPARATOR 是一个我不知道的常量,但显然它是在文件系统扩展名中定义的。如果 __FILE__ 是“/foo/bar/baz/file.php”,那么路径就是“/foo/bar/baz/”。所以这个说法似乎是不完整的。require() 与 include() 类似,只是如果找不到文件会出错。路径从不引用文件,因此该语句没有多大意义。

路径信息()

pathinfo() 解析路径。将路径传递给它,它将给出一个关联数组,其中包含 dirname、basename、extension 和 filename 键以及解析路径的各个部分。

定义('BASE_PATH',realpath('.'));

realpath() 将采用相对路径并将其变形为绝对路径。如前所述,“。” 指的是工作目录,如果是 "/foo/bar/baz" 那么 realpath(".") 将返回 "/foo/bar/baz"。define() 将生成一个常量,因此这具有将 BASE_PATH 常量设置为脚本工作目录的效果。如果在脚本过程中工作目录发生变化,或者如果您在子目录中包含文件,这可能很有用,他们可以使用常量来引用 Web 应用程序的顶层。

定义('BASE_URL', 目录名($_SERVER["SCRIPT_NAME"]));

与define() 和dirname() 相同。这里的新东西是 $_SERVER["SCRIPT_NAME"]。如果加载脚本的地址是 example.com/foo/file.php,那么这将是“/foo/file.php”,并且 dirname() 是“/foo”。设置此常量可能有助于 Web 应用程序中的页面相互引用。

于 2012-06-01T03:40:19.270 回答