2011-01-26 3 views
0

В настоящее время я использую две функции для удаления из каждой папки через 1 минуту, но поскольку они в основном делают то же самое (только разные папки называются). Мне было интересно, можно ли их объединить в одну?Объединить две функции, которые в основном делают то же самое

function DeleteFromFolder1() { 
    $captchaFolder = 'folder1/'; 
    $fileTypes  = '*.jpg'; 
    $expire_time = 1; 
    foreach(glob($captchaFolder . $fileTypes) as $Filename) { 
    $FileCreationTime = filectime($Filename); 
    $FileAge = time() - $FileCreationTime; 

if($FileAge > ($expire_time * 60)) 
    { 
    unlink($Filename); 
      } 
     } 
    } 

function DeleteFromFolder2() { 
    $captchaFolder = 'folder2/'; 
    $fileTypes  = '*.jpg'; 
    $expire_time = 1; 
    foreach(glob($captchaFolder . $fileTypes) as $Filename) { 
    $FileCreationTime = filectime($Filename); 
    $FileAge = time() - $FileCreationTime; 

if($FileAge > ($expire_time * 60)) 
    { 
    to ($Filename); 
      } 
     } 
    } 

ответ

1

Спасибо за ваши ответы, но все я теперь сортируется, добавив:

unlink(path/to/temp/image.jpg); 

на мою страницу результатов которая удаляет загруженное изображение, как только палец создается и удаляется функцию, связанную с Это.

Еще раз за ответы :)

0
function DeleteFromFolder($captchaFolder) { 
    $fileTypes  = '*.jpg'; 
    // and so on 
} 

Если вы хотите, вы можете добавить две вспомогательные функции

function DeleteFromFolder1() { return DeleteFromFolder('folder1/'); } 
function DeleteFromFolder2() { return DeleteFromFolder('folder2/'); } 
1

Передайте имя папки в качестве аргумента.

function DeleteFromFolder($captchaFolder) { 
    $fileTypes  = '*.jpg'; 
    $expire_time = 1; 
    foreach(glob($captchaFolder . $fileTypes) as $Filename) { 
    $FileCreationTime = filectime($Filename); 
    $FileAge = time() - $FileCreationTime; 

if($FileAge > ($expire_time * 60)) 
    { 
    unlink($Filename); 
      } 
     } 
    } 
0

Чтобы сделать это без редактирования структуры, вы можете передать переменную в свою основную функцию. Вы можете сделать что-то подобное

function DeleteFromFolder1($dir=NULL) { 
     if($dir == NULL) 
      $captchaFolder = 'folder1/'; 
     else 
      $captchaFolder = $dir; 
     $fileTypes  = '*.jpg'; 
     $expire_time = 1; 
     foreach(glob($captchaFolder . $fileTypes) as $Filename) { 
     $FileCreationTime = filectime($Filename); 
     $FileAge = time() - $FileCreationTime; 

    if($FileAge > ($expire_time * 60)) 
     { 
     unlink($Filename); 
     } 
    } 
    } 

function DeleteFromFolder2() { 
    DeleteFromFolder1("folder2/"); 
} 
} 

Это должно работать без внесения каких-либо серьезных изменений в текущую базу кода.

EDIT (Добавление больше описания для некоторой ясности)

Я предполагал, что ваш код уже был реализован в некотором роде. Если это так, довольно сложное решение похоже на мое (это позволит сделать наименьшее количество изменений). В противном случае вы можете объединить эту функцию только с первой, и она будет работать нормально. DeleteFromFolder2() - это просто функция перенаправления.

Функция принимает аргумент $file, который является нулевым, если не объявлен при вызове функции. Если $file == NULL, то он по умолчанию удалит папку1, в противном случае он попытается удалить указанную папку. Надеюсь, это немного облегчит!

Удачи вам!
Dennis M.

+0

Чувствует себя немного любопытно. В основном те же функции с почти одинаковыми именами, но один принимает аргумент, а другой нет? Что произойдет, если кто-то использует другой '$ файл', чем' null' или 'folder2 /' (например, typo)? (Подсказка: это приведет к удалению чего-либо ниже текущего рабочего каталога!) – KingCrunch

+0

Я немного обновил описание, надеюсь, что это может прояснить ситуацию. – RageD

Смежные вопросы