2012-06-01 96 views
1

这很简单,但非常混乱的大部分时间..PHP包括/需要的路径规范格式

我需要知道这意味着什么用,当我们包括文件由下面的模式(其中我在很多地方都看到可能还有更多)

这是什么意思?

"./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"])); 

回答

2

“./path”

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

“/路径”

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

“../path”

“..” 指的是一个水平之上工作目录的目录。所以,如果工作目录是/ foo /酒吧则 “..” 是 “/ foo” 和 “../path” 指的是 “/富/路径”

目录名(__ FILE__)

dirname()“返回父目录的路径。” __FILE__是一个魔术常数,指的是使用它的文件的完整路径。所以如果你在/foo/bar/baz/file.php有一个脚本,__FILE__将是“/foo/bar/baz/file.php”,dirname(__ FILE__)将是“/ foo/bar/baz”

basename(dirname(dirname(__ 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()

PATHINFO()分析的路径。将它传递给一个路径,它将给出一个包含dirname,basename,扩展名和文件名键以及解析路径的相应部分的关联数组。

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

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

define('BASE_URL',dirname($ _ SERVER [“SCRIPT_NAME”]));

同样处理与定义()和目录名()。这里的新东西是$ _SERVER [“SCRIPT_NAME”]。如果脚本是从加载地址是example.com/foo/file.php那么这将是“/foo/file.php”和目录名()的是“/ foo”的。设置这个常量可能对Web应用程序中的页面互相引用很有用。