文件已成功复制但条件在Laravel

时间:2017-09-23 18:17:45

标签: php laravel

我已经创建了一个在Larave中将一个目录复制到另一个目录的函数。为此,我写了下面的代码,但代码表现不对。
该函数返回值“1”,即“真”,但条件表现不对。

    public static function copyOneToAnother($source) {
        //Do Something
        $destination = __DIR__."/uploads/testing_another_dir";
        File::makeDirectory($destination);
        return File::copyDirectory($source, $destination);
    }
    public function actionCopy(){
      $source = __DIR__.'/my_project/project1';
      $copy_status = $this->copyOneToAnother($source);  //This is returning true
      if($copy_status === 1){
          echo "Files Copied Successfully";
      }
      else{
          echo "There was an error";
      }

    }

此代码始终显示以下结果

  

发生了错误

但文件已成功复制,$copy_status的值也为1,即使它正在进入其他循环。我也尝试使用trim()并使用true / false in if但是对我不起作用。

2 个答案:

答案 0 :(得分:0)

您正在检查数据类型匹配,然后只显示成功消息,但数据类型返回true而不是1

if($copy_status === 1){
          echo "Files Copied Successfully";
      }

如果您在下面查看,那么它将显示成功

if($copy_status == 1){
          echo "Files Copied Successfully";
      }

而不是与之比较,你可以直接检查如下,所以它会对待真正的

 if($copy_status){
          echo "Files Copied Successfully";
      }
      else{
          echo "There was an error";
      }

$ a == $ b
如果在类型杂耍之后$a等于$b,则等于TRUE。

$ a === $ b

如果$a等于$b且属于same type,则为真。

参考:http://php.net/manual/en/language.operators.comparison.php

答案 1 :(得分:0)

如果您说$copy_status正在返回true,那么它不能同时1

===检查严格的平等 - 1 == true,但是1 !== true

另外,你可以使用

if ($copy_status) {
    // do something here
}

这与撰写if ($copy_status) == 1基本相同。

有关比较的更多信息here