簡體   English   中英

php類在另一個函數錯誤內調用函數

[英]php Class calling a function inside another function error

我有以下課程,里面沒有幾個功能。 我在get_dir_size() Diskspace()函數內調用get_dir_size()時出現錯誤。 它沒有意識到。 我究竟做錯了什么。 該代碼用於創建一個expressionengine插件。

致命錯誤:調用未定義的函數get_dir_size()

class DiskSpace
{

    public $return_data = "";
    public function Diskspace()
    {
        $this->EE =& get_instance();

        $dir_name = $_SERVER['DOCUMENT_ROOT']."/userfiles/";
        /* 1048576 bytes == 1MB */
        $total_size= round((get_dir_size($dir_name) / 1048576),2) ;
         $this->return_data = $total_size;

    }

    public function get_dir_size($dir_name){
        $dir_size =0;
        if (is_dir($dir_name)) {
            if ($dh = opendir($dir_name)) {
                while (($file = readdir($dh)) !== false) {
                    if($file !="." && $file != ".."){
                        if(is_file($dir_name."/".$file)){
                            $dir_size += filesize($dir_name."/".$file);
                        }
                        /* check for any new directory inside this directory */
                        if(is_dir($dir_name."/".$file)){
                            $dir_size +=  get_dir_size($dir_name."/".$file);
                        }
                    }
                }
            }
        }
        closedir($dh);
        return $dir_size;
    }
}

將調用get_dir_size($ dir_name)的行更改為:-

$total_size= round(($this->get_dir_size($dir_name) / 1048576),2) ;

此代碼還有更多問題,這是什么? $this->EE = & get_instance(); 而且,當您執行closedir($dh);時也會出錯closedir($dh); 如果聲明所在的if語句未執行。

請記住,當您在對象內部調用對象自己的函數時,請使用$ this指針變量。

$total_size= round((get_dir_size($dir_name) / 1048576),2) ;

改成

 $total_size= round(($this->get_dir_size($dir_name) / 1048576),2) ;

如果您告訴我們錯誤發生在哪一行,那也很好。 看到完整的錯誤日志也將很高興。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM