-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()3 番目のパラメーターがあります

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 に答える