あるファイルを作成したいといった場合に、素直にtouchなんかでファイルを作成したくても途中のディレクトリが存在しないためエラーになってしまうということがあったりします。
なので、パスに含まれるディレクトリの存在をチェックし、無ければ合わせてそのディレクトリも作成するメソッドを作ってみました。
ファイルまたはディレクトリの両方を作成できますが、ディレクトリを作成したい場合は引数のパスの最後に/をつける必要があります。
/path/to/barならbarファイルができますが、/path/to/bar/ならbarディレクトリを作成します。
function createFile($file)
{
// ファイルが既に存在する場合
if (!empty($file) && is_readable($file)) {
return true;
} else {
// 最後がスラッシュで終わる場合
if (substr($file, -1) === '/') {
return mkdir($file, 0777, true);
} else {
$path = pathinfo($file);
// ディレクトリがあればファイルだけ作成、無ければディレクトリ+ファイルを作成
return is_readable($path['dirname']) ? touch($file) : (mkdir($path['dirname'], 0777, true) && touch($file));
}
}
}