【问题标题】:Merge two functions that basically do the same thing合并两个基本上做同样事情的函数
【发布时间】:2011-06-15 14:05:23
【问题描述】:

我目前正在使用两个函数在 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);
          }
       }
    }

【问题讨论】:

    标签: php function merge delete-file unlink


    【解决方案1】:

    感谢大家的回答,但我现在已经通过添加:

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

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

    再次感谢您的回答:)

    【讨论】:

      【解决方案2】:

      要尝试在不编辑结构的情况下执行此操作,您可以将变量传递到主函数中。你可以这样做

          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,否则会尝试删除指定的文件夹。我希望这能把事情弄清楚一点!

      祝你好运!
      丹尼斯 M.

      【讨论】:

      • 有点好奇。基本上相同的函数名称几乎相同,但一个接受参数而一个不接受?如果有人使用 $file 而不是 nullfolder2/(例如拼写错误),会发生什么? (提示:这将删除当前工作目录下的所有内容!)
      • 我稍微更新了描述,希望可以澄清一些事情。
      【解决方案3】:

      将文件夹名称作为参数传递。

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

      【讨论】:

        【解决方案4】:
        function DeleteFromFolder($captchaFolder) {
            $fileTypes     = '*.jpg';
            // and so on
        }
        

        如果你喜欢,你可以添加两个辅助函数

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-25
          • 2017-12-03
          相关资源
          最近更新 更多