Codeigniter在帮助程序中没有活动类范围时,无法访问self ::

时间:2014-07-04 15:53:45

标签: php codeigniter

基本上我正在使用codeigniter内的更新系统。我的目的是从提取的更新文件中递归复制目录。因此我创建了一个帮助文件并自动加载它以便我可以测试。

在帮助文件中,我有一个如下功能来复制目录,如果它是一个目录,则复制该文件:

new_helper.php:

if(!function_exists('directory_copy'))
{
    function directory_copy($srcdir, $dstdir)
    {
        //preparing the paths
        $srcdir=rtrim($srcdir,'/');
        $dstdir=rtrim($dstdir,'/');

        //creating the destination directory
        if(!is_dir($dstdir))mkdir($dstdir, 0777, true);

        //Mapping the directory
        $dir_map=directory_map($srcdir);

        foreach($dir_map as $object_key=>$object_value)
        {
            if(is_numeric($object_key))
                copy($srcdir.'/'.$object_value,$dstdir.'/'.$object_value);//This is a File not a directory
            else
                directory_copy($srcdir.'/'.$object_key,$dstdir.'/'.$object_key);//this is a directory
        }
    }
}

在帮助程序中加载后,我尝试从我的控制器中访问该函数,如下所示:

directory_copy($source.$file, $destination);

此外,PHP一直不友善,并向我提供了以下错误:致命错误:当文件位置&#39; .php <没有类活动时,无法访问self :: / p>

Codeigniter相当新,因此我不太确定如何在我的控制器之外使用此功能并让它工作。

有谁知道我怎么能让它发挥作用?

谢谢。

修改 我在我的控制器中添加了$this->load->helper('directory');

1 个答案:

答案 0 :(得分:0)

您应该扩展Directory帮助程序,而不是创建新的帮助程序,因为您正在使用的“directory_map”函数是目录帮助程序的一部分。

创建一个新文件“MY_directory_helper.php”添加你的函数,并将其保存在“/ application / helpers”中,然后在你的控制器中加载目录助手;

$this->load->helper('directory');

您现在应该可以使用此功能

directory_copy($srcdir, $dstdir);