Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рекурсивное удаление директорий
 
 автор: VYB   (21.11.2006 в 20:42)   письмо автору
 
 

Есть функции:

//этот метод возвращает абсолютный путь к папке
 function getAbsolutePath($fold)
 {
     global $rootDirectory, $fileSeparator;

     $folderName=$rootDirectory;
     $arrayStr=split("/",$fold);
     for($i=0;$i<sizeof($arrayStr);$i++){
         $folderName=$folderName.$fileSeparator.$arrayStr[$i];
         }
         return $folderName;
 }

  //создать папку
 function createFolder($currFolder, $foldName)
 {
     return mkdir(getAbsolutePath($currFolder."/".$foldName),0700);
 }
 
 //рекурсивное удаление папок
 function deleteFolder($currFolder,$foldName)
 {
     global $fileSeparator;
     if(($dir=opendir(getAbsolutePath($currFolder . "/" . $foldName)))<0)
     {
         return $dir;
         }
         while (($file=readdir($dir))!=null){
             $absFilePath=getAbsolutePath($currFolder . "/" . $foldName).$fileSeparator . $file;
             if(is_dir($absFilePath)){
                 if(($file!= ".")&&($file!="..")){
                     if(($res=deleteFolder($currFolder . "/" . $foldName,$file))<0){
                         return $res;
                         }
                         }
                         }else{
                             if(($res=deleteFile($currFolder . "/" . $foldName, $file))<0){
                                 return $res;
                                 }
                                 }
                                 }
                                 closedir($dir);
                                 return rmdir(getAbsolutePath($currFolder."/".$foldName));
                                 }
 //удаление файла
 function deleteFile($currFolder,$fileName)
 {
     return unlink(getAbsolutePath($currFolder."/".$fileName));
 }


Помогите понять как работает функция deleteFolder:почему opendir(getAbsolutePath($currFolder . "/" . $foldName)))<0 и $res=deleteFile($currFolder . "/" . $foldName, $file))<0 ???

   
 
 автор: cheops   (22.11.2006 в 00:46)   письмо автору
 
   для: VYB   (21.11.2006 в 20:42)
 

А что вызывает сложность? Просто путь для opendir() формируется при помощи фукнции getAbsolutePath(), любая строка при сравнении с числом приводится тоже к числу, как правило, к нулю, отсюда такое сравнение, хотя в таких случаях обычно используют сравнение !== NULL.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования