2013-10-01 104 views
2

当引用PHP中的目录时,例如下面的代码。定义目录时最后有/没有'/'有什么区别?

index.php

if ($handle = opendir('/path/to/images/directory')) { 

    while (false !== ($fileName = readdir($handle))) { 

     ... 

    } 

    closedir($handle); 
} 

我们可以假设的设置如下。以下代表[directory],所有代码位于index.php文件中,我们希望遍历的文件/文件位于[images]目录中。

-[css] 
-[js] 
-[inc] 
-[images] 
-index.php 

具体的opendir('/path/to/images/directory')) {线,什么是引用该目录的最佳实践?

最后应该有尾随/,因为它是一个目录或是不必要的? 它应该是相对的吗? Absoulte? 我们可以用SERVER_VARIABLES代替吗?

回答

2

对于实际/绝对约定我建议亲属,但也许只是我。 它允许您的代码更容易重新定位。

然后,curiosly,我检查PHP源代码并执行opendir缠绕在各种C函数和其中的一个是

php_check_open_basedir

313     while (ptr && *ptr) { 
314       end = strchr(ptr, DEFAULT_DIR_SEPARATOR); 
315       if (end != NULL) { 
316         *end = '\0'; 
317         end++; 
318       } 
319 
320       if (php_check_specific_open_basedir(ptr, path TSRMLS_CC) == 0) { 
321         efree(pathbuf); 
322         return 0; 
323       } 
324 
325       ptr = end; 
326     } 

所以基本上它循环在你的路径从一个DEFAULT_DIR_SEPARATOR跳到另一个。 所以我猜,你越少越好。

而且阅读你的代码,但也许只是我的口味:。 使用$目录“/” $文件名看起来比$ DIR $文件名

反正没有现实世界的区别我想好了。

+0

我的意思是一般来说,不只是与我的代码有关。我的代码是举一个例子。我想问的是,**必须**当定义一个目录时,我总是有一个'/'结尾? – Mike

+0

是的,我的意思是一般。 最后/未真正使用,差异极小,不可通知。 对于绝对或相对的,我建议亲属,以防万一有人应该移动他的代码在其他服务器/位置。 – AndreaBogazzi