递归复制未定义的函数

时间:2014-12-30 17:17:32

标签: php

我有一个递归复制功能,应该将所有文件从一个目录复制到另一个目录,但是它会出错。这是功能;

public function cpy($source, $dest){
    if(is_dir($source)) {
        $dir_handle=opendir($source);
        while($file=readdir($dir_handle)){
            if($file!="." && $file!=".."){
                if(is_dir($source."/".$file)){
                    if(!is_dir($dest."/".$file)){
                        mkdir($dest."/".$file);
                    }
                    cpy($source."/".$file, $dest."/".$file);
                } else {
                    copy($source."/".$file, $dest."/".$file);
                }
            }
        }
        closedir($dir_handle);
    } else {
        copy($source, $dest);
    }
}

给出的错误是Fatal error: Call to undefined function cpy() in /var/www/Deployer/include/deployer.class.php on line 14

这个功能也在一个类中。

3 个答案:

答案 0 :(得分:2)

你在使用任何课程吗?然后你应该使用:

$this->cpy(...)

或删除功能前面的public

答案 1 :(得分:2)

使用$this ->

public function cpy($source, $dest){
    if(is_dir($source)) {
        $dir_handle=opendir($source);
        while($file=readdir($dir_handle)){
            if($file!="." && $file!=".."){
                if(is_dir($source."/".$file)){
                    if(!is_dir($dest."/".$file)){
                        mkdir($dest."/".$file);
                    }
                    $this->cpy($source."/".$file, $dest."/".$file);// use the $this keyword here
                } else {
                    copy($source."/".$file, $dest."/".$file);
                }
            }
        }
        closedir($dir_handle);
    } else {
        copy($source, $dest);
    }
}

答案 2 :(得分:0)

这可能是因为你在上课。

请改为尝试:

self::cpy($source."/".$file, $dest."/".$file);