2011-07-01 51 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

......我不敢想这个家伙在发布这个问题前工作了多长时间。 –