@kiberchainik
начинающий найкрутейшЫй програмЁр

Как удалить только файлы и пустой каталог php?

вот такой метод удаления
private function deleteDir('images/company/'.$folder['seo']) {
            if (! is_dir($dirPath)) {
                throw new Exception("$dirPath must be a directory");
            }
            if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') {
                $dirPath .= '/';
            }
            $files = glob($dirPath . '*', GLOB_MARK);
            foreach ($files as $file) {
                if (is_dir($file)) {
                    $this->deleteDir($file);
                } else {
                    unlink($file);
                }
            }
            rmdir($dirPath);
        }

удаляет все до уровня images/, в то время как нужно удалить только $folder['seo'] из каталога 'images/company/'. Как исправить этот код?
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 1
Nikepn911
@Nikepn911
Web-developer
А ты уверен, что $folder['seo'] приходит не пустой при вызове данного метода?
Потому как, я попробовал твой код у себя инициализировать, удалило только конечную директорию с файлами, которую я указал в параметрах по дефолту (в примере ниже только директорию folder и все что внутри неё)
public function deleteDir($dirPath = 'images/company/folder/')
    {
        if (! is_dir($dirPath)) {
            throw new Exception("$dirPath must be a directory");
        }
        if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') {
            $dirPath .= '/';
        }
        echo $dirPath;
        $files = glob($dirPath . '*', GLOB_MARK);
        var_dump($files);
        foreach ($files as $file) {
            if (is_dir($file)) {
                $this->deleteDir($file);
            } else {
                unlink($file);
            }
        }
        rmdir($dirPath);
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы