Добрый день! Гуру программирования помогите не опытному... Изучаю PHP, задался целью написать функцию, которая улучшала бы rmdir(), по умолчанию функция удаляет папку только если она пуста. У меня получилось сие творчество: Код (Text): function delContent($delPath){ if (!rmdir($delPath)){ $dir = opendir($delPath); chdir($delPath); while(($f=readdir($dir)) !== false){ if(($f == ".") || ($f == "..")){ continue; } if(is_dir($f)){ $arr_dir[] = $f; } if(is_file($f)){ $arr_file[] = $f; } } for($i=0; $i<count($arr_file); $i++){ unlink($arr_file[$i]); } for($i=0; $i<count($arr_dir); $i++){ delContent($arr_dir[$i]); } } rmdir($delPath); } В итоге удаляются файлы, а папки остаются, в общем почему 23 строчка кода не выполняется?
PHP: <?php error_reporting ( E_ALL | E_STRICT ); function govnokod( string $directory ) { if ( !is_dir ( $directory ) ) throw new Exception( 'Пшоль нафиг, твоя несуществующая директория: ' . $directory ); $glob = glob ( $directory . '/*' ); foreach ( $glob AS $path ) { if ( is_dir ( $path ) ) { govnokod( $path ); } elseif( is_file ( $path ) ) { unlink ( $path ); } else { throw new Exception( 'Тупая ошибка, обычно идут кофе мутить, посылают программирование и идут в танчики натягивать' ); } } rmdir ( $directory ); }
PHP: <?php // Директория, в которой будут удалены все дочерние // директории и файлы, включая её саму $dir = 'dir_name'; $it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS); $files = new RecursiveIteratorIterator($it,RecursiveIteratorIterator::CHILD_FIRST); foreach($files as $file) { if ($file->isDir()){ rmdir($file->getRealPath()); } else { unlink($file->getRealPath()); } } rmdir($dir);
ADSoft. Верное замечание! Спасибо! MouseZver. Твой govnokod отлично работает. Про glob() не знал, отличная вещь. Благодарю! Deonis. В ООП пока не силен, пока трудно разобраться, учту на будущее. Может кто выступить учителем. Одно дело скопировать код, посмотреть! Вау! все работает! Автор крут! А другое понять... Почему даже в govnokod 28 строка c rmdir() срабатывает, а в моем "творчестве" нет? )))