Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Recursive copy undefined function

Tags:

php

I have a recursive copy function that should copy all files from a directory to another, but it gives an error. This is the function;

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

The error given is Fatal error: Call to undefined function cpy() in /var/www/Deployer/include/deployer.class.php on line 14

This function is also in a class.

like image 890
Core Avatar asked Dec 13 '25 09:12

Core


2 Answers

Are you using any class? then you should use:

$this->cpy(...)

Or remove the public infront of the function.

like image 104
Riad Avatar answered Dec 15 '25 22:12

Riad


Use $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);
    }
}
like image 28
Surya Avatar answered Dec 15 '25 21:12

Surya