合并两个基本上做同样事情的函数

时间:2011-01-26 00:44:44

标签: php function merge delete-file unlink

我目前正在使用两个功能在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 个答案:

答案 0 :(得分: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);
          }
       }
    }

答案 1 :(得分:1)

感谢您的回答,但我现在已添加:

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

到我的结果页面,它会在创建拇指后删除上传的图像,并删除与之关联的功能。

再次感谢您的回答:)

答案 2 :(得分:0)

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

如果您愿意,可以添加两个辅助函数

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

答案 3 :(得分: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/");
}
}

这应该可以在不对您当前的代码库进行任何重大更改的情况下运行。

编辑(为了清晰起见,添加更多说明)

我假设你的代码已经以某种方式实现了。如果是这种情况,一个相当笨重的解决方案就像我上面的那样(这将允许进行最少量的编辑)。否则,您可以将此功能合并到第一个,它将正常工作。 DeleteFromFolder2()只是一个重定向函数。

该函数接受参数$file,如果在调用函数时未声明,则该参数为null。如果是$file == NULL,则默认情况下会删除folder1,否则会尝试删除指定的文件夹。我希望能稍微清理一下!

祝你好运!
丹尼斯M。