2011-07-01 52 views
-2

我有以下目錄c:/files我試圖創建一個包裝函數,它模擬mkdir()的功能,除了在多個文件夾上工作,例如創建不支持PHP的目錄路徑mkdir?

的mkdir正常工作在以下方面:

mkdir('c:/files/games', 0777); 

但不是在這:

mkdir('c:/files/games/say/yes', 0777); 

下面有一些粗糙的代碼來進一步描述我想要實現:

function mmkdir($path, $chmod = 0777) { 
/* do some loop or something with mkdir()? here */ 
} 

mmkdir('C:/tmp/something/something'); 

mmkdir('C:/tmp/go/something'); 

mmkdir('C:/tmp/yes'); 
+0

你有中間「說「文件夾創建? – Headshota

+0

你的方法簽名是扭曲的。嘗試刪除$ path變量。 – Joe

+0

不,我認爲mkdir的工作原理是隻創建給定路徑中的最後一個文件夾,這就是爲什麼我認爲我需要使用包裝函數來處理這個問題? – newbtophp

回答

3

使用遞歸參數設置爲TRUE調用mkdir()函數。例如:

mkdir('c:/files/games/say/yes', 0777, TRUE); 
6

的mkdir正常工作在以下方面:

但不是在這:

mkdir('c:/files/games/say/yes', 0777);

錯誤,mkdir()具有第三平價ameter

布爾的mkdir(字符串$路徑[摘要$模式= 0777 [,布爾$遞歸=假 [,資源$背景]]])

mkdir('c:/files/games/say/yes', 0777, true); 

這使得您的自定義功能已過時。不過,如果你真的想創建自己的功能(這在我看來是不值得考慮,因爲它已經存在內置),它應該看起來像

function recursive_mkdir ($path, $chmod = 0777) { 
    $parent = dirname($path); 
    if (!file_exists($parent)) recursive_mkdir($parent, $chmod); 
    mkdir($path, $chmod); 
} 
+0

+1:我哈哈。 :)人們什麼時候會學會閱讀他們使用的函數的documentation_?這是令人震驚的... –

+0

我不知道..尤其是它的速度更快,比在SO寫一個問題;) – KingCrunch

+0

......我不敢想這個傢伙在發佈這個問題前工作了多長時間。 –