2013-10-01 27 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