以下の内容はhttps://takuya-1st.hatenablog.jp/entry/2020/10/20/000000より取得しました。


phpで'rm -rf'で再帰的に空じゃないフォルダを消す。

php で rm -rf をする方法を探してた

PHPの組み込み機能をすごく上手につかった方法を発見したのでメモ。

<?php
function rm_rf($dir){
  $entries = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
    RecursiveIteratorIterator::CHILD_FIRST
  );
  
  foreach ($entries as $entry) {
    $func = ($entry->isDir() ? 'rmdir' : 'unlink');
    $func($entry->getRealPath());
  }
  rmdir($dir);
}

これを使うと、再帰的な削除でドットファイル再帰的な関数呼び出しも発生しない。頭いいなぁ。と思う。

RecursiveDirectoryIteratorで、ドット除去したファイル一覧を取得して、 RecursiveIteratorIterator::CHILD_FIRSTで、引数に指定されたディレクトリを最後に回す。

そうすると、foreach だけですべて削除が完成する。よく考えてある。というか RecursiveIteratorIteratorはそのためにあったんだと感心する。

以前の資料

php rmdir() で空じゃないフォルダを消すには? - それマグで!




以上の内容はhttps://takuya-1st.hatenablog.jp/entry/2020/10/20/000000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14