-2

我有以下目录c:/files,我正在尝试创建一个包装函数,它模拟 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');
4

2 回答 2

6

mkdir 在以下方面工作正常:

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

但不是这个:

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

错了,mkdir()有第三个参数

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

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);
}
于 2011-07-01T19:49:41.463 回答
4

调用将mkdir()递归参数设置为 的函数TRUE。例如:

mkdir('c:/files/games/say/yes', 0777, TRUE);
于 2011-07-01T19:49:22.603 回答