Объединить две функции, которые в основном делают одно и то же - PullRequest
0 голосов
/ 26 января 2011

В настоящее время я использую две функции для удаления из каждой папки через 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);
          }
       }
    }

Ответы [ 4 ]

1 голос
/ 26 января 2011

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

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

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

Еще раз спасибо за ваши ответы:)

1 голос
/ 26 января 2011

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

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 голосов
/ 26 января 2011

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

    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/");
}
}

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

РЕДАКТИРОВАТЬ (Добавление более описания для некоторыхясность)

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

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

Удачи!Деннис М.

0 голосов
/ 26 января 2011
function DeleteFromFolder($captchaFolder) {
    $fileTypes     = '*.jpg';
    // and so on
}

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

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